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

Вот примерно так выглядит БД сейчас (да, я знаю, что это ужасно, но это было сделано более года назад и как такового понимания, что такое связи в бд не было:) )
и задача состоит именно в том, чтобы разделить все в отдельные таблицы