Следите за нами: 

История мероприятия

Отдел по работе с вузами

Менторская программа 2018 — 2019

Прием заявок

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

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

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

Как стать участником

Смотри проекты ниже, выбирай интересные и отправляй заявку на участие до 28 октября.

Отправить заявку

Проекты

1. Приложение для изучения иностранных языков

Наставник: Мария Кунцевич

Разработаем мобильное приложение (возможно, и веб-версию) для пользователей, которые учат новый иностранный язык или несколько языков. Есть теория, что легче запоминать слова, не заучивая их с нуля, а прикрепляя к уже имеющимся в памяти ассоциациям. Приложение предлагает пользователям заполнять карточки слов с одновременным переводом на один, два и более языков.

Подробнее

Задачи

  1. Создать словарь, сохранить в нем слова с переводом на разные языки.
  2. Создать возможность тренировки слов: пользователь может выбрать перевод слова из предложенных вариантов.
  3. Распределить слова по частоте использования.

Что можно накрутить еще

  • Создать возможность тренировки не только слов, но и фраз.
  • Разработать учетку пользователей (личный кабинет).

Требования

Возьмем одного или двух студентов.

2. Масштабирование подсистемы записи строго ориентированной последовательности событий

Наставники: Андрей Костоусов, Максим Пивко, Никита Сивухин

В нашем сервисе EDI центральное место занимает структура данных, которую можно назвать «персистентный синхронизированный ивент-лог». Эта структура данных построена на базе NoSQL СУБД Apache Cassandra. Наш проект дает возможность научиться делать нагрузочное тестирование сложных распределенных систем. Научим работе с БД Cassandra.

Подробнее

Вот список ключевых требований, которые реализует подсистема ивент-лога:

  • Вставка возможна только в конец (не пишем в прошлое).
  • Все читатели «видят» события в одном порядке.
  • Читатели и писатели работают конкурентно.
  • Доступность на чтение и на запись (нет единой точки отказа).
  • Задержка при чтении свежих событий минимальна.

Сейчас текущая нагрузка на запись в этот ивент-лог в нашей системе достигает 70K RPM, и, хотя запаса прочности этой подсистемы хватает «на текущие нужды», мы хотим заняться ее масштабированием.  

Задачи

  1. Организовать процесс нагрузочного тестирования подсистемы ивент-лога, чтобы научиться оценивать выигрыш от разного рода оптимизаций и доработок. Все необходимые приборы для этого у нас уже разработаны. По сути, нужно будет применить подходы и инструменты, которые мы используем в нагрузочном тестировании очереди сообщений, к подсистеме ивент-лога.
  2. Запрограммировать и протестировать пару идей, позволяющих увеличить пропускную способность ивент-лога на запись. Тут будет над чем поломать голову — не все наши идеи проработаны до готовности к кодированию.
  3. Бонус-трек. Вместе с оптимизациями мы хотим поменять реализацию алгоритмов чтения и записи в ивент-лог, переписав взаимодействие с Кассандрой с устаревшего протокола Thrift (в Apache Cassandra 4.0 он больше не поддерживается) на современный Native Transport и CQL. Это также потребует тщательного тестирования производительности.

На выходе хочется получить существенную прокачку одной из основных компонент ядра довольного крупного продукта (Контур.Ритейл). Суровый продакшн, жесткие требования по отказоустойчивости.

Материалы по теме

Требования

Возьмем одного студента, который должен хотеть и мочь. У него должно быть достаточно свободного времени на проект (не меньше дня в неделю). Программировать придется на C#. Ну и с Кассандрой придется плотно познакомиться.

3. Heroes of debugging and compiling Il

Наставники: Евгения Садовничая и Евгений Юрьев

Мы разработали свой предметно-ориентированный язык (DSL). Он нужен для того, чтобы описывать правила, по которым затем будет собираться метаинформация с больших (до 10 Гб) структурированных данных. У нас есть два параллельных проекта для двух студентов:

Подробнее

Проект № 1

Сейчас у нас есть инструмент для комфортного редактирования правил. Это плагин для VS Code, который писал наш стажер на предыдущей Менторской программе.

Плагин практически идеален. В нем есть автодополнение, переход к определению, переименования, подсветка синтаксиса. Но ему не хватает дополнительных фичи: статический анализ, рефакторинг кода и отладка.

Задачи

  1. Реализовать фичи: статический анализ, рефакторинг кода.
  2. Поддержать возможность отладки.

Проект № 2

Написанные правила компилируются в высокопроизводительный il-код (высокоуровневый ассемблер). Перед тем, как запускать этот код, хочется его проанализировать и оптимизировать неэффективные участки, если такие найдутся. Также для отладки хочется научиться дебажить декомилированную версию этого кода.

Задачи

  1. Проанализировать код и оптимизировать неэффективные участки.
  2. Научиться дебажить декомилированную версию кода.

Требования

Нам нужны два героя, которые придут и запилят недостающие фичи. Знание или желание разобраться в C# и внутренностях CLR, Roslyn, AST, grammar, compilers, algorithms.

4. Разработка игры: изометрическая RPG

Наставники: Андрей Третьяков и Алексей Бровко

Мы хотим сделать изометрическую RPG. Что-то похожее на Diablo. Полчища монстров против человечества в лице нашего главного героя. В результате мы хотим получить продукт, в который можно будет и самому поиграть, и другим показать. Главное, осуществить «детскую» мечту многих геймеров — создать свою игру. Писать игру будем на C# в Unity3D.

Подробнее

Задачи

Вероятно, конкурента Diablo мы создать не успеем, поэтому будем двигаться к успеху маленькими шагами:
 
  1. Создадим персонажа, обучим его ходить и сражаться. Начнем с наиболее простого архетипа — воин.
  2. Создадим простых юнитов. Монстров, которые будут атаковать героя различными способами.
  3. Создадим простую карту.
  4. Добавим персонажу дерево развития.

Требования

Возьмем одного или нескольких студентов, которые будут работать над разными аспектами игры. Важно знание C#, любовь к играм и желание учиться =).

Подать заявку