Prueba poniendo este último where.
Lo que hace es que el join te muestra todos los registros y el where te quita los que al unir no haya encontrado un registro para la tabla periodos_calificados y por lo tanto están con un valor nulo.
Código SQL
[-]
SELECT cargaacademica.id_asignatura,
cargaacademica.id_sede,
cargaacademica.id_jornada,
cargaacademica.id_grado,
cargaacademica.grupo
FROM cargaacademica
LEFT OUTER JOIN periodos_calificados
ON cargaacademica.id_asignatura = periodos_calificados.id_asignatura and
cargaacademica.id_sede = periodos_calificados.id_sede and
cargaacademica.id_jornada = periodos_calificados.id_jornada and
cargaacademica.id_grado = periodos_calificados.id_grado and
cargaacademica.grupo = periodos_calificados.ID_GRUPO and
cargaacademica.ano_lectivo = periodos_calificados.ano_lectivo and
periodos_calificados.ano_lectivo=2013 and
periodos_calificados.id_periodo=4
WHERE
periodos_calificados.id_asignatura is null