Поскольку это всего лишь курсовая работа, нужно как можно более четко очертить и сузить рамки задачи. Одно дело "просто" распихать студентов и преподавателей по аудиториям и часам. В реале для тех и для других желательно минимизировать количество "окон", количество перемещений между аудиториями или хотя бы корпусами, более менее равномерно распределить нагрузку и т.д. На практике, думаю, лучший результат даст сочетание автоматического составления некоторой базы расписания с ручной доводкой/корректировкой, скорее всего в несколько итераций. Но вряд ли всё это реализуемо в рамках курсовой работы.