Как проходят хакатоны
на «Разработке программного обеспечения»
Один из основных форматов проектной деятельности на «Разработке программного обеспечения» – учебные хакатоны. Они проходят на программе дважды в год. Пожалуй, самый важный и сложный – первый осенний хакатон, где студенты знакомятся с форматом и учатся работать в команде. Рассказываем, как вообще устроены хакатоны на нашей программе и какие проекты первокурсники представили на DevDays Fall 2022.
Хакатон – это отличная возможность для студентов на практике использовать теоретические знания и поработать над созданием полноценного проекта. Также хакатоны учат эффективно работать в команде, быстро принимать решения, находить выход в стрессовых ситуациях, прокачивают критическое мышление и тайм-менеджмент. Одна из важнейших частей мероприятия – презентация итогового проекта, так что хакатоны учат еще и преподносить результаты своей работы в понятном виде.
Как проходит хакатон
За неделю до старта хакатона каждый студент программы должен предложить идею проекта. На этом этапе самое важное – привлекательность и актуальность, а не возможность реализации в сжатые сроки. После того, как пул проектов собран, авторы презентуют свои идеи одногруппникам. Все студенты голосуют за понравившиеся задумки. Так формируется список проектов-финалистов. Изначально на DevDays Fall 2022 было представлено 50 идей, но до реализации дошло всего 8 проектов.

Основная часть хакатона начинается в понедельник со второй презентации идей, в которой участвуют только проекты-финалисты. Авторы еще раз, но уже более детально, рассказывают про свою задумку, обсуждают варианты реализации с другими студентами, в процессе докручивая идею. В результате второго питчинга участники делятся на команды по 3-5 человек, причем автор идеи может уйти в другой проект – это не запрещено.

С вечера понедельника начинается непосредственная работа над проектами. Один-два раза в день у каждой команды проходят установочные встречи, на которых ребята рассказывают, что они сделали и что планируют делать дальше, а кураторы программы дают советы и корректируют их работу.

В среду проходит Proof of Concept – встреча, на которой каждая команда окончательно формулирует цель своего проекта и доказывает его работоспособность. В четверг участники показывают демо, а в пятницу проходят защиты с демонстрацией минимально жизнеспособного продукта.

В процессе работы над проектом команды могут в любой момент обратиться за помощью к кураторам, преподавателям или сторонним экспертам. Последнее актуально, когда проект тесно связан с другим коммерческим или open-source продуктом. Например, в прошлом году одна из команд разрабатывала плагин для IntelliJ IDEA, который позволяет выполнять сниппеты кода из комментариев. Чтобы ответить на часть своих вопросов, ребята взаимодействовали с коллегами из JetBrains.
Как оцениваются результаты
Каждая команда должна подготовить презентацию на семь минут, в ходе которой продемонстрировать минимально жизнеспособный продукт. Презентация может быть в любом формате, часто участники записывают видео.

Результаты оценивают как члены жюри, в которое входят выпускники, преподаватели и внешние эксперты, так и все участники хакатона. Предложенным решениям ставят баллы по трем критериям:
  1. актуальность и важность идеи;
  2. чистота и полнота реализации;
  3. итоговая презентация проекта.
После подсчёта результатов, определяются победители по трем номинациям: лучший проект, самый эффективный тимлид и MVP – most valuable player, т.е. лучший участник.

В этом году на хакатоне DevDays Fall 2022 было реализовано 8 проектов. Кто из них стал победителем мы узнаем чуть позже, а пока представим вам все идеи.
Проекты DevDays Fall 2022
AnkiStep

Команда: Ольга Бачище – тимлид, Николай Стойко, Екатерина Черницына, Даниил Шушаков

Автоматическая генерация флеш-карт для повторения материала из пройденного курса на Stepik в формат Anki.

Для многих студентов актуальна такая проблема: пройденный материал быстро забывается без регулярных повторений, а создавать карточки вручную долго и сложно. Кроме того, подобных решений для образовательных платформ раньше не было.

Команда использовала открытые API Anki и Stepik, само приложение получает данные и конвертирует их в нужный формат. Приложение реализовывали на Python. В итоге у ребят получилась консольная утилита, с помощью которой можно авторизоваться на Stepik, просмотреть курсы пользователя, выбрать и конвертировать необходимый курс в набор Anki-карт, который сразу сохраняется в приватный репозиторий пользователя в Anki.

Репозиторий


VIPER

Команда: Антон Суркис – тимлид, Владислав Арефьев, Даниил Зинченко, Евгений Свирин

Vim для картинок. Редактор графики с принципиально отличающимся от альтернатив интерфейсом, который целиком управляется с клавиатуры.

Команда написала клиентское приложение, используя C++ и SFML. Их редактор поддерживает палитру из 36 цветов, небольшие (помещающиеся на экран) изображения, выделение прямоугольником, эллипсом или линией, а также замену цвета по выделению. В дальнейших планах — рефакторинг и добавление новых возможностей, а также исследование интерфейсов.

Репозиторий


NewSqool

Команда: Андрей Егорычев — тимлид, Эридан Доморацкий, Алексей Воробьев, Илья Иванцов

Новый интерфейс для контестного сервера Sqool, который помогает изучать SQL.

Команда написала бэк-прокси на NestJS, фронт на React/TS с использованием библиотек PrimeReact, Prism и Axios и расширение для браузера на Chrome Extension Platform V3.

Ребята полностью повторили функционал оригинального сайта, переписав его на современный фреймворк. Они переработали дизайн для улучшения удобства использования, добавили подсветку синтаксиса, удобное отображение схемы БД. Кроме того этот вариант сайта полностью совместим с существующим бэкендом контестного сервера, что позволяет с минимальными трудозатратами интегрировать его в продакшн. Для упрощения входа через старый сайт используется расширение Chrome, совместимое с большинством современных браузеров. В планах команды перенести сайт на существующий контестный сервер, добавить автодополнение кода и смену темы (светлая/темная).

Репозиторий

Полуавтоматический счетчик

Команда: Сергей Кузиванов — тимлид, Светлана Розанова, Динар Шакуров, Дмитрий Чучин, Игорь Шакиров

Android-приложение, которое упрощает алгоритм передачи показаний потребления ресурсов с домовых/квартирных счетчиков.

Ребята использовали Java/Kotlin для программирования Android-приложения, Flask для написания сервера для распознавания показаний на счетчиках, а с помощью SpringBoot развернули Selenium на втором сервере.

У команды получилось приложение с очень полезным функционалом. Через него можно авторизоваться в личном кабинете сайта подачи показаний Нижегородской области, сделать фото счетчиков, а приложение само распознает показания и заполнит нужные графы. Пользователю остается только нажать кнопку «Отправить».

Репозиторий


Psycho

Команда: Григорий Райкин — тимлид, Илья Колегов, Семен Абакумов, Маргарита Лазарева, Ильсияр Фаттахова

Менеджер задач, ориентированный на парадигму планирования, которую студенты используют на занятиях по Soft skills и эмоциональному интеллекту. Позволяет рационально организовать свои цели и задачи.

Недавно на занятиях по Soft Skills первокурсники разбирали тему тайм-менеджмента, но оказалось, что ни одно из существующих приложений в точности не реализует рассмотренный метод планирования. Поэтому команда решила такое приложение написать. Для фронтенда они использовали React JS, для бэкенда – Python Django и базу данных Sqlite3.

В итоге у ребят получится прототип сервиса, реализующий базовую функциональность менеджера целей и задач, а также несколько уникальных фич: группировку задач по «горизонтам планирования» и приоритизацию по матрице Эйзенхауэра.

Репозиторий


Student.Manager

Команда: Николай Сикачин — тимлид, Дмитрий Патока, Павел Самсонов, Егор Овчинников

Система, которая агрегирует информацию о курсах, заданиях и успеваемости студентов из разных источников: гугл-таблиц и wiki программы. Также в ней реализовано управление со стороны кураторов.

Студентам программы не хватало подобного сервиса для учебы. Также иногда у преподавателей возникали проблемы с доступом к wiki, а кураторам было трудно агрегировать текущую статистику из множества таблиц каждый месяц.

При реализации проект разбили на несколько компонентов:
  • Основа в виде веб-сервиса, реализованного на платформе ASP.NET Core 6 вместе с отдельной библиотекой для взаимодействия и парсинга информации из Google Таблиц на C#.
  • Для работы с методами и авторизацией для API wiki команда выделила отдельный сервис, написанный на PHP+Lumen.
  • В качестве основного клиента системы выбрали наиболее удобное решение для бэкенд разработчиков – телеграмм бота, который был реализован на Java+Spring.
В результате команда реализовала такую функциональность: получение индивидуальной информации по предметам студента и его оценки, возможность добавления ссылки на wiki для преподавателей, возможность создавать общую выгрузку баллов по всем предметам для кураторов. Также ребята работали над добавление файла из бота на wiki, но они не успели реализовать эту фичу до конца хакатона.

Репозиторий



Overleaf extension

Команда: Юлия Косенко — тимлид, Анеля Дусаева, Дмитрий Карагодин, Илья Галиев, Артем Лазарев

Расширение для браузера, которое позволяет быстро отправлять письма с домашними заданиями с сайта Overleaf в формате PDF.

Это еще один проект, облегчающий жизнь студентам «Разработки программного обеспечения». Многие ребята выполняют домашнюю работу в онлайн-редакторе Latex — Overleaf. Но отправка сгенерированного файла преподавателю осуществляется через отдельный почтовый клиент и связана с рутинными операциями: выбор получателя, вставка файла, редактирование текста письма и темы. Предложенное расширение для браузера позволяет автоматизировать этот процесс: настрой один раз, пользуйся до конца семестра.

При его реализации команда использовала Java для написания сервера, отвечающего за отправку писем, svelte для фронтенда и просто JS для некоторых скриптов, которые, например, отвечали за получение и отправку файла в формате pdf на локальный сервер.

В конце хакатона команда представила работающее расширение, с помощью которого можно настроить почты преподавателей и шаблоны текстов, используемые в письмах (тему и тело письма) с поддержкой двух плейсхолдеров, представляющихся автоматически: ФИО отправляющего и номер домашнего задания. Отправка писем реализована с почт Gmail и Yandex.

Репозиторий


Maniac_q

Команда: Константин Гамора — тимлид, Илья Асадуллин, Александр Ивашкявичус, Иван Назаров

Движок для игры Quoridor с возможностью игры с ботом на движке.

Работая над проектом, команда использовала plain C++ и CMake. Они реализовали консольное представлены игры Quoridor, игру с ботом и предложение лучшего хода. К сожалению, изначально ребята выбрали неоптимальный алгоритм, отвечающий за ходы бота, и не спели исправить этот момент до конца хакатона.

Репозиторий