Boa! Acho q eh um problema bem válido, mas q foge do escopo do projeto (educação superior).

No entanto, tem um problema semelhante q vou precisar resolver: todo semestre é preciso definir quais turmas serão abertas, em quais salas, dias e horários as aulas irão ocorrer, quem serão os professores... No final é um problema de alocar recursos com base em restrições mutuamente excludentes, então daria pra extender a mesma solução para o problema que você trouxe acima.

Obrigado pelo feedback!

sim, no caso, esse problema se chama, atribuição de docente. isso ocorre na esfera municipal,onde os professores passam por um concurso e recebem uma pontuação, e através dessa pontuação eles fazem uma ordem de preferência, onde os professores podem escolher as escolas, e horários. isso acaba com o esquema de privilégio. quanto as turmas, tem um processo chamado de pre matricula, onde ele faz uma analise previa, para ver quantas vagas serão necessárias para atender a demanada.

Tenho o código de um sistema que fiz com algoritmos genéticos para resolver exatamente esse problema se estiver interessado, só está uma droga pq é da época da faculdade

Opa, se puder compartilhar agradeço. Vc tentou via solução exata tbm (sem heurística)? A princípio eu acho que seria viável, dependendo das restrições e da quantidade cursos/professores/alunos.
Não tentamos pq na época a ideia era justamente aplicar algoritmos genéticos a um problema, creio que dê sim para fazer, mas não consigo pensar em uma boa solução de outra forma por conta do conflito de horários entre professores