Desbordante

О проекте

Профилирование данных — это процесс извлечения метаданных. Его принято подразделять на наивный и продвинутый. В наивном извлекается такая простая информация как время создания, автор, размер и прочее. В случае продвинутого из данных извлекаются сложные паттерны, которые описывают скрытые закономерности в данных. Сложные паттерны могут быть полезны ученым, аналитикам и специалистам по машинному обучению.

Desbordante — высокопроизводительный профайлер данных, нацеленный на извлечение наукоемких паттернов. Он разрабатывается нашей группой с 2019 года, написан на C++ и является open-source проектом с кодом на github. На настоящий момент является наиболее высокопроизводительной open-source системой такого класса. Про него можно почитать тут и тут, а попробовать здесь. Более подробно про профилирование данных и про Desbordante рассказывается в лекции летней школы Мат-Меха. Развитию этой системы и будут посвящены задачи практики. Их можно условно разбить на три трека: алгоритмы (добавление новых примитивов), бэкенд, фронтенд.

Технический стек: C++17, NodeJS, TypeScript, React, Next.js, GraphQL и куча всего еще.

В рамках проекта есть следующие типы задач: 1) Реализация новых примитивов — Inclusion Dependencies, Bidirectional Order Dependencies, GFD, Cross Joins и куча других. Разбираем математизированные статьи и реализуем их на C++. Пример того, что придется разбирать: https://dl.acm.org/doi/10.1145/2882903.2915232 2) Вывод новых примитивов (которые реализованы в консольной версии) на веб: фронт и бэк.

Вот тут есть примерный список задач и ссылка на еще материалы. При поступлении в проект возможен собес.

Требования к студенту

Они сильно зависит от трека, все вышеперечисленное знать не надо:

1) реализующим новые примитивы — современный C++ (мув-семантика обязательна, но это можно доучить по-ходу, было бы желание), желание разбирать статьи и изучать алгоритмы

2) Бэкерам — NodeJS (сейчас в процессе переезда на python), TypeScript и т.д.

3) Фронтам — TypeScript, React и т.д.

Disclaimer

Пара слов о том, куда Вы идете.

У меня очень много людей (25+) и поэтому я не смогу сидеть с каждым и объяснять в какой класс что дописать. Зато у меня есть сообщество: есть ребята, которые смотрят пулл-реквесты, отвечают на технические вопросы, если у кого-то что-то не компилируется, могут помочь в меру возможностей (а могут и не помочь -- как пойдет). Совсем старшие, мои выпускники, вместе со мной читают статьи, выбирают перспективные направления дальнейшей работы. Думаю, идея понятна.

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

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

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

Уровень

2 курс, 3 курс, Бакалаврская ВКР, Магистерская ВКР


Руководитель

Чернышев Георгий Алексеевич


Консультант

Чернышев Георгий Алексеевич


Источник

От себя лично