ABCDEFGHIJKLMNOPQRSTUVW
1
РуководительТемаЗадачиОжидаемый результат и полученный опытТребованияМатериалы-1
2
JB01Антон ПодкопаевРеляционная операционная семантика C11 Реализовать реляционный интерпретатор подмножества С/C++11 (операции над памятью в многопоточной среде) по описанной операционной семантике.- Ожидаемый результат для руководителя
Интерпретатор, который может быть использован для изучения операционной семантики C/C++11.

- Опыт, который получит студент
Студент ознакомится с операциоными семантиками, реляционным программированием,
а также получит представление о проблемах многопоточного исполнения программ в современных окружениях.
Знакомство с языком Racket (диалект LISP), платформами PLT Redex для описания семантик и miniKanren для реляционного программирования.
Студент НЕ будет программированить/изучать C/C++.
1) Близкое знакомство с одним из функциональных языков (LISP, Haskell, ML).
2) Готовность заниматься научными задачами (не имеющими прямого приложения).
3) Способность читать статьи на английском языке и самостоятельно изучать новое.

Тестовое задание (перед собеседованием)
1) Установить DrRacket (или Emacs + Racket mode).
2) Самостоятельно реализовать mergesort списков на Racket.
https://jetbrains.ru/students/practice/archive/
3
JB02Семён ГригорьевАнализ динамически формируемого кодаa. Задача 1. Применение анализа строковых выражений для JavaScript eval
i. опыт для студента: бесценный опыт исследования, чтение научных статей, поиск как теоритических так и инженерных решений, F#, JavaScript, OCaml, ..., глубокие познания в статическом, синтаксическом анализе кода, трансляторах
ii. результат для руководителя: публикации по теме исследования, транслятор из JavaScript с eval в JavaScript с безопасным аналогом eval
b. Задача 2. Использование SPPF в абстрактном синтаксическом анализе
i. опыт для студента: познания в синтаксическим и семантическом анализе кода, чтение статей, F#, OCaml, FsYacc
ii. результат для руководителя: публикации по теме исследования, сравнение подходов к анализу динамически формируемого кода, семантический анализ для динамически формируемого кода.
Требования к знаниям/навыкам одинаковы во всех задачах. Варьируется тольок "степень владения".
-- Знакомство с функциональным программированием (F# или OCaml)
-- Знания в области лексического и синтаксического анализа
-- Знания в области техник трансляции
-- Умение читать научные статьи, чужой код
-- Навыки работы с Git/GitHub, Microsof VisualStudio
https://jetbrains.ru/students/practice/archive/
4
JB03Средства сертификационного программирования. Общий ожидаемый результат проекта: полнофункциональный прототип средства для сертификационного программирования (язык + IDE) и публикации по соответствующей теме.
a. Задача 1. Объединение F# и F*
i. опыт для студента: языки: F#, F*; технологии: FsLex, FsYacc (генераторы лексерови парсеров), Git; знания: лексический, синтаксический анализ, грамматики, семантика, создание трансляторов.
ii. результат для руководителя: парсер для языка на основе F# с включением возможностей F*, транслятор подмножества полученного языка в F*
b. Задача 2. Поддержка F#* в Microsoft Visual Studio.
i. опыт для студента: языки: C#, F#, F*, опыт создания расширения для MSVS IDE.
ii. результат для руководителя: Поддержка языка, полученного в предыдущей задаче в MSVS IDE.
c. Задача 3. Межъязыковое взаимодействие F# и F*
i. опыт для студента: языки: F#, F*; понимание принципов работы .NET, систем вывода типов.
ii. результат для руководителя: возможность использовать новый язык в реальных проектах.
https://jetbrains.ru/students/practice/archive/
5
JB04Николай ВяххиTelegram BotРеализовать бота для Telegram с нуля. Что будет делать бот – на ваше усмотрение, хотя список идей у нас есть на всякий случай.Технологии: Stepic.org REST API, Python3, https://core.telegram.org/bots/api, https://habrahabr.ru/post/262247/
https://jetbrains.ru/students/practice/archive/
6
JB05IntelliJ Plugin for Code ChallengesРазработать плагин для IntelliJ Platform, с помощью которого можно будет решать и сдавать задачи на программирование на Stepic.org.

Пример подключения к Stepic.org из PyCharm Edu – https://github.com/JetBrains/intellij-community/tree/143/python/educational/interactive-learning/src/com/jetbrains/edu/learning/stepic
Технологии: Stepic.org REST API, Java.
https://jetbrains.ru/students/practice/archive/
7
JB06Проект студента в Stepic.orgЕсли вы знаете, как улучшить Stepic.org, и готовы этим заниматься, то мы готовы обсудить индивидуальную тему. Для этого вместе с заявкой на проект пришлите краткое описание предполагаемого проекта.Технологии: Python 3, Django, Docker, REST API, Ember.js, CoffeeScript / ECMAScript 6.https://jetbrains.ru/students/practice/archive/
8
JB07Дмитрий КалашниковПоиск используемых технологий (фраемоврки, библиотеки, системы управления зависимостями) в проектах с открытым исходным кодом- Разработка алгоритма поиска вхождения технологий в репозитории на GitHub.
- Сбор метаинформации по репозиториям: количество форков, вотчеров, даты создания, etc.
- Создание парсера, в рамках которого будет реализован алгоритма. Предполагается, что парсер будет выполнен в качестве сервиса.
- Разработка структуры данных для хранения результатов.
Оптимальный алгоритм поиска (в первую очередь - быстрый)

Будут использованы: git, java 8, spring, MongoDB или SQL server. Студент волен сам добавлять различные фраемворки/библиотеки, если посчитает это необходимым
Студент должен знать git и java 8, иметь общую алгоритмическую подготовку и опыт разработки многопоточных приложений. Желательно, но не обязательно иметь хотя бы общее представление о том как устроен spring. Было бы совсем прекрасно, если бы студент прослушал какой-либо курс по компиляторам, но это требование абсолютно не критично.https://jetbrains.ru/students/practice/archive/
9
JB08Анастасия ЧумакFinding the the best algorithm for detecting "influencers" on Twitter to be implemented in JetBrains Internal Twitter Analysis Tool- Secondary research (literature and media overview)
* Define the attributes of the “influencer on Twitter” (what are they apart from the number of followers? Does it matter more who those followers are?)
* Trial online tools that have such functionality (SocialBro, Krout etc.), try to understand the principles they are based on
- Build the model of “influencer” determination
- Test the model on JetBrains Twitter accounts
- Embed “Influencers” feature into Internal Twitter Analysis Tool (if possible)
New feature in Internal Twitter Analysis Tool

Work experience with twitter documentation and REST APIs
Python
MongoDB
- Interest in Social Media Research
- English level - sufficient to understand articles in English and trial tools
- Experience in work/projects on Twitter (encouraged, but not required)
https://jetbrains.ru/students/practice/archive/
10
JB09Аркадий КалакуцкийEvents extraction from natural texts- обзор готовых библиотек
- описание модели события
- реализация модуля, который на вход получает текст, на выходе отдает описание события
(*)сбор новостей в интернет
(*)добавление событий в единый timeline
работающий модуль, извлекающий события из текстов

опыт: программирование на Java или Python, работа с NLP библиотеками, работа с БД
базовые навыки программированияhttps://jetbrains.ru/students/practice/archive/
11
JB10Question-answering system- распарсить текст запроса заданного в строго определенном формате. Например, формат -- “сущность место время”, запрос -- “programmers in Canada in 2012”. Набор сущностей о которых могут задаваться вопрсы ограничен.
- классификация запроса, научиться понимать к каким источникам данных он относится. Источников данных ограниченное количество.
- формировать запрос к источнику
- собрать единую систему, которая принимает запросы на вход и выдает ответы-данные на выходе
(*)научиться задавать наводящие и уточняющие вопросы, если запрос не понят
(*)распарсить текст запроса заданного в более свободной форме. С добавлением служебных слов.
(*)распарсить текст запроса заданного в произвольной форме.
получить систему отвечающую на корректные вопрсоы заданные в строго определенном формате.

опыт: программирвоание на Python, работа с естественным текстом, возможно работа с NLP библиотеками, работа с БД
базовые навыки программированияhttps://jetbrains.ru/students/practice/archive/
12
JB11Василий КорфA time series model for speculative prices and rates of return of wholesale distribution business.A time series model for speculative prices and rates of return of wholesale distribution business
Goals:
Understand the principles of software wholesale distribution
Model of identifying successful resellers, assessment of competitiveness
Mode of determining the fair commission for distributors
успешная апробация результатов
опыт: связь машинного обучения с задачами маркетинга, экономики
r and/or python, basic economic theoryhttps://jetbrains.ru/students/practice/archive/
13
JB12Predictions model for the future of programming market.
Predictions model for the future of programming market
Goals:
Identify the main factors for evaluating the software market
Сalculate the saturation of the market
Find and highlight consumer behavior patterns
Inflation and crisis model of programming technologies
https://jetbrains.ru/students/practice/archive/
14
JB13Олег ШпыновGemlBeeУсовершенствовать имеющийся прототип
• Итеративная загрузка данных
• Арифметика над данными
• Предикаты над данными
Java + Kotlin 1, 2https://jetbrains.ru/students/practice/archive/
15
JB14Kotlin for JupiterЕсть проект python kernel for java9
https://github.com/Bachmann1234/java9_kernel

Сделать прототип jupiter kernel для Kotlin.
Python 2, 3https://jetbrains.ru/students/practice/archive/
16
JB15DPC benchmark (биоинформатика)Прототип benchmark-а для оценки качества DPC с
возможностью добавления новых инструментов.
Bioinformatics formats / tools knowledge 1, 3https://jetbrains.ru/students/practice/archive/
17
JB16Александр ПодхалюзинАвтоматический сбор необходимых данных для воспроизведения баги красного кода в Scala pluginВ Scala plugin есть проблемы с красным кодом, который не регистрируется компилятором. Многим пользователям нет возможности сообщить об этой ошибки нам, так как код нельзя распространять, а времени для упрощения ошибки самостятельно у пользователя нет. Предлагается научиться упрощать ошибку автоматически, что позволит подобным пользователям легче соглашаться на report подобных багов.Ожидаемый результат проверить насколько хорошо это возможно сделать, так как в общем случае у задачи нету решения.

Студент получит хорошее представления о том, как устроено IDE изнутри и анализатор, похожий на компилятор.
Мы будем писать код на Scala. Кроме умения писать на этом языке придется хорошо в нем разобраться, так как сама задача этого требует.

Главным плюсом будет умение думать. Полезно знание Java, JVM, но не обязательно, так как писать будем все равно на совершенно другом языке (Scala).
https://jetbrains.ru/students/practice/archive/
18
JB17Поддержка markup для чата с интеграциями с сервисами, такими как GitHubJetChat - чат с открытым исходным кодом с возможностью получать нотификации от сервисов, таких как GitHub вместо почты. Сейчас мы умеем получать и отправлять сообщения на GitHub, тем не менее хотелось бы иметь возможность редактировать более богатый текст с нашим синтаксисом для markup, который бы преобразовавылся в синтаксис GitHub и наоборот.

Хочется получить этот результат. Если останется время, можно будет продолжить работу над встроенными картинками.
Мы используем следующий стек, backend: Play 2, Scala, MySQL, Slick, Akka. Frontend: React.js, Reflux. Этот стек довольно современный, подобная практика позволит писать высохотехнологичные web приложения, что даст студенту огромное преимущество в поиске работы в будущем.
Скорость освоения технологий будет ключевым, так как иначе на это потребуется слишком много времени. В целом главным плюсом является по-прежнему умение думать. Полезным, но не обязательным является знание Java, JVM, а также каких-либо web технологий.
https://jetbrains.ru/students/practice/archive/
19
JB18Мария ДавыдоваIn-Browser Workflow Editor (bootstrap)Одной из фич YouTrack являются Workflows - расширения, написанные на JavaScript и позволяющее пользователям добавлять функциональность к продукту, используя встроенный API. В настоящий момент эти расширения можно писать только во внешнем редактора, не очень удобном для пользователя и крайне сложном для поддержки (в силу технических причин).

Цель данной стажировки - имея API в YouTrack и эскизы браузерной версии редактора, забустрапить его как standalone web application. Наиболее вероятный объём работ: создать приложение, которое позволит читать существующие правила (файлы Workflow), будет подсвечивать код, добавит подсказки, позволит создавать новые правила в памяти (редактирование и сохранение правил на первом этапе не обязательно).
Стажёру придётся познакомиться с JavaScript, создать веб-приложение (наиболее вероятно, что на Angular), которые будет общаться с сервером по REST API, исследовать существующие библиотеки для подсветки кода и подключения подсказок и completion. Код должен быть аккуратен и покрыт тестами. Руководитель будет активно ревьюить работу стажёра.
https://jetbrains.ru/students/practice/archive/
20
JB19Поиск цитат в письмахКаждый почтовый клиент по-своему оформляет цитаты при отправке писем (под цитатой подразумевается каким-то образом выделенный текст письма, на которое данное является ответом). Из-за этого невозможно однозначно определить алгоритм определения того, что является цитатой, а что - нет. Однако можно сформулировать набор эвристик, которые позволят с высокой вероятностью находить цитаты (и различные почтовые клиенты справляются с этой задачей с той или иной степенью успешности).Стажёру предлагается написать самодостаточную библиотеку на Kotlin, которая будет выделять цитаты из писем. Библиотека должна быть аккуратно спроектирована и покрыта тестами. Руководитель будет активно ревьюить работу стажёра.https://jetbrains.ru/students/practice/archive/
21
JB20Илья БирюковАльтернативные стратегии подстановки макросов для препроцессора языков С и С++Описание:
На препроцессирование уходит значительная часть времени компиляции программ на C и C++. Есть подозрение, что в некоторых случаях(например, если в компилируемой программе используется Boost.Preprocessor) можно ускорить препроцессирование, если иметь возможность производить частичные подстановки тел макросов. В рамках практики предполагается оценка возможного ускорения при использовании такого подхода и реализация работающего прототипа на базе какого-нибудь open-source компилятора C/C++.

Задачи:
1. Оценка возможного ускорения с использованием альтернативной стратегии подстановки макросов.
2. Реализация прототипа на базе существующего препроцессора(скорее всего, на базе clang).
3. Реализация описанного подхода в ReSharper C++(если успеем).
Ожидаемый результат:
Оценка применимости такого подхода на практике(правда ли быстрее?).
Ускорение препроцессора в ReSharper C++(если успеем).

Опыт, который получит студент:
Работа с настоящим большим open-source проектом(скорее всего, clang). (На языке C++)
Подробно разберётся в том, как работает препроцессор языка C.
Если успеем, то опыт работы над ReSharper C++. (На платформе .Net)
уверенное знание C++, для последнего задания: базовое представление о .Net или Java.
https://jetbrains.ru/students/practice/archive/
22
JB21Даниил ОвчинниковДекомпилятор GroovyГлобальная задача: декомпилятор .class файлов в исходный код Groovy (как часть поддержки Groovy в IDEA или отдельный плагин).

Задачи:
- декомпиляция структуры (классы, методы, типы полей, вложенные классы, трейты, перечисления, etc);
- декомпиляция блоков собственно кода:
- статически скомпилированного кода (можно на лето);
- динамически скомпилированного кода (пока непонятно можно ли это вообще сделать, насколько сложно и есть ли смысл, можно рассмотреть в качестве диплома).
Упрощение работы со скомпилированными классами Groovy, избавление от велосипедов, к которым пришлось прибегнуть вместо написания декомпилятора.

Опыт для студента:
Работа с байткодом, работа с IDEA API.
- опыт написания кода на Groovy и Java;
- Kotlin или Scala (хотя бы для разбора примеров, в Scala);
- знакомство с байткодом;
- знание базовых шаблонов проектирования (например, посетитель).
https://jetbrains.ru/students/practice/archive/
23
JB22Ярослав ЛепенькинПоиск книг о городах и странах- Извлечение городов и стран из книг (epub)
- Веб-интерфейс для отображения книг, упоминающих данные города и страны
Веб-сервис, позволяющий находить книги, в которых упоминаются, введенные пользователем, города и страны.

Опыт: анализ книг - любимый язык, веб - js/html/css, поиск по строкам
желаниеhttps://jetbrains.ru/students/practice/archive/
24
JB23Иван СорокинЛексер для C++Сравнить несколько подходов для написания лексеров и существующие лексеры, и сделать лексер, который работает быстроОжидаемый результат для меня: мы получим лексер, который работает не в 10 раз медленее, чем лексеры в реальных компиляторах

Опыт который получит студент: студент узнает как работает компьютер, и как оптимизировать программы
знание C++, желательно знание ассемблераhttps://jetbrains.ru/students/practice/archive/
25
BAT01Евгений БаталовCRIU. Тренировочные задачиhttp://mit.spbau.ru/sewiki/images/8/8f/Batalov-CRIU-project-spring2016.pdf
26
BAT02CRIU. Валидатор дампов
27
BAT03CRIU. Фильтры для page-xfer
28
BAT04CRIU. Поддержка больших ghost файлов
29
BAT05CLILK. Смена позиции воспроизведенияhttp://mit.spbau.ru/sewiki/images/f/f0/Batalov-Clilk-project-spring2016.pdf
30
BAT06CLILK. Циклическая анимация
31
BAT07CLILK. Сжатие картинок и файла проекта
32
BAT08CLILK. Поддержка планшетов в редакторе
33
BAT09CLILK. Автоматический бан роликов
34
BAT10CLILK. Автоматическое определение интересности ролика
35
KRI01Кирилл Кринкин3D-Scanner with LeapMotion/RS
36
KRI02[Smart] Broken build notifier
37
KRI03Arduino/Energia toolchain manager
38
GUK01Артур Гулецкий
Дмитрий Карташов
Адаптивный контроллер для SLAM
http://mit.spbau.ru/sewiki/images/e/e6/GuletskyKartashov-project-spring2016.pdf
39
GUK02
Локализация в однородных окружениях
40
GUK03Оптимизация EKF-SLAM
41
GUK042D-SDF-SLAM to 3D
42
GUK05
Анализ дескрипторов особых точек
43
GUK06Эмуляция тачскрина
44
MOS01Денис МосквинКанонические комбинаторы на уровне типовhttp://mit.spbau.ru/sewiki/images/3/3b/Moskvin-project-spring2016.pdf
45
MOS02Перепись населения типа
46
SHP01Алексей ШпильманОптимизация дорожной сетиhttp://mit.spbau.ru/sewiki/images/c/cf/Shpilman-project-spring2016.pdf
47
SHP02Анализ клеток
48
SHP03Динамика биополимеров
49
BIO01Антон КоробейниковФильтр Блумаhttp://mit.spbau.ru/sewiki/images/d/db/Bioinf-project-spring2016.pdf
50
BIO02Александр ШлемовИммуноинформатика. Слияние парных ридов антител
51
BIO03Иммуноинформатика. Коррекция ошибок в ридах антител
52
BIO04Андрей ПржибельскийПостроения графа связей геномных последовательностей по ридам РНК/ДНК
53
BIO05Кира ВяткинаПроекты по протеомике
54
VER01Марат Ахин,
Михаил Беляев
Анализ указателей LLVMhttp://mit.spbau.ru/sewiki/images/8/80/LAV-project-spring2016.pdf
55
VER02Предметно-ориентированный анализ на основе контрактов
56
VER03Фронтэнд анализ для Rust
57
VER04Ассемблерные вставки для LLVM IR
58
VER05Интероперабельность для LLVM-совместимых языков
59
VER06QuickCheck для Kotlin
60
VER07Предсказание конфликтов при merge
61
VER08Генерация commit-сообщения
62
VER09Слияние конфликтов при коммитах
63
VER10Разбиение коммитов на части
64
SIM01Валерий ЛесинVoice activity detectionhttp://mit.spbau.ru/sewiki/images/5/58/Simlabs-project-spring2016.pdf
65
SIM02Синхронный захват и воспроизведение аудио/видео потока
66
SIM03Rendering server & web-based client
67
SIM04Height Map/Digital elevation modelБазовые знания вычислительной геометрии
68
GEO01Дмитрий Рыкованов, Илья АверьяновОбработка БКА и Канопус-Вhttp://mit.spbau.ru/sewiki/images/0/0b/Geoscan-project-spring2016.pdf
69
GEO02Управление воздушным пространством БПЛА
70
GEO033D фотобудка
71
GEO04Групповое управление БПЛА
72
GEO04Унификация АП и НСУ
73
CS01Гирш Э.А.
74
CS02Ицыксон Д.М.
75
CS03Сергей Николенко
76
CS04Александр Кноп
77
CS05Александр Куликов
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100