Непонятно с чем у вас проблема. Если задача просто избегать накладок, то сделайте в методе добавления урока в день проверку, что начало одного урока не меньше конца другого. Если нужно набить в один день как можно больше учебных часов без перекрытия, то подойдёт жадный алгоритм календарного планирования. Если между уроками есть зависимости, то топологическая сортировка.