Java-разработчик в Альфа-Банке
Адаптивная система обучения языкам программирования
2021
В ходе обучения в университете на парах по программированию мы решали олимпиадные задачи с использованием внутренней системы университета и на сайтах ACMP и Codeforces. Мне очень понравилась идея этих систем, которая заключалась в автоматизированной проверке решения задач, путем прогона автотестов. Самая замечательная особенность данных систем — это поддержка большого количества языков программирования.
В качестве темы магистерской диссертации я решил проработать с нуля систему, которая будет включать в себя как учебные материалы, так и практические задачи по программированию. Помимо разработки веб-приложения — я придумал идею интеграции с существующими системами проверки задач по программированию. Благодаря интеграции можно получить много данных, если пользователь уже раньше решал задачи на внешних системах.
Архитектуру системы использовал трехуровневую. Выбор пал на нее, так как я на работе имел дело с подобной архитектурой и мне захотелось самому попробовать «поднять» её.
Основное приложение разбил на модули. Из всех модулей мне был больше всего интересен интеграционный модуль с внешними системами. Практически реализовал адаптеры под «заглушечную» систему и под Codeforces — у них кстати очень хорошее API. В итоге с такой реализацией мне удалось собрать данные с аккаунта пользователя во внешних системах и загрузить в свою БД, а также реализовать API для UI.
И еще один немаловажный блок диссертации был про рекомендательную систему. В ходе исследования я проработал критерии отбора материалов и задач, а также сформировал общий вид алгоритма рекомендаций, основанный на двух подходах: content-based рекомендациям и коллаборативной фильтрации.
Весь проект был учебным, так что система так и осталась прототипом, но я получил очень хороший базовый опыт о проектировании и разработке систем.