--пользователь (userId, username, group, year)
Уже лажа, так как группы у вас отдельные сущности, со своими свойствами, группы будут связаны с пользователями через пивот таблицу, так как наверняка будут пользователи, входящие в разные группы.
--курсы (интовое значение)
Курс - это сущность. Какое интовое значение?
--группы (количество групп напрямую зависит от курса)
Ваще до ручки сколько и что от чего зависит. Группы так же связанны таблицей отношений с курсами, как с юзерами. Отдельный пивот.
--дата проведения занятия
Собсно таблица расписаний дата/начало/конец/айди группы/айди предмета/кабинет.
В зависимости от нюансов, которых я не знаю, таблицы могут быть с меньшим отношением, например не многие ко многим, а один ко многим, что немного меняет структуру, но в целом смысл останется примерно тот же.