tal vez no funciona por el formato de las fechas si es SQL es mejor usar 'yyyy-mm-dd' por que si se usa como lo tienes termina siendo dependiente del idioma en el que esta configurado el SQL, en el caso de SQL server seria
select acofesigl,nombre_materia,acofegrup,acdocnomb
from acofe,materia,acdoc
where acofesigl = materia.sigla
and acofecarr = materia.carr
and acofeplan = materia.plan
and acofecdoc = acdoccdoc
and acofensem = "2"
and acofenano = 2004
and not exists (select cod_mat from faltas
where cod_mat = materia.cod_mat
and sem = acofensem
and ano = acofenano
and fechai >= '20040109'
and fechaf <= '20043009')
Acuerdate de las comillas simples y de que fechai sea datetime