• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site
Article
Statistical testing of segment homogeneity in classification of piecewise-regular objects

Savchenko A., Belova N. S.

International Journal of Applied Mathematics and Computer Science. 2015. Vol. 25. No. 4. P. 915-925.

Article
Reconstruction of a word from a finite set of its subwords under the unit shift hypothesis. I. Reconstruction without for bidden words1

Smetanin Y., Ulyanov M.

Cybernetics and Systems Analysis. 2015. Vol. 50. No. 1. P. 148-156.

Article
VTMine Framework as Applied to Process Mining Modeling

Sergey Andreevich Shershakov.

International Journal of Computer and Communication Engineering. 2015. Vol. 4. No. 3. P. 166-179.

Code as Data

2022/2023
Academic Year
RUS
Instruction in Russian
5
ECTS credits
Type:
Elective course
When:
3 year, 3, 4 module

Instructor

Булычев Егор Геннадьевич

Булычев Егор Геннадьевич

Программа дисциплины

Аннотация

Данная дисциплина познакомит студентов с трудностями, которые возникают в ходе автоматизированного анализа больших объемов исходного кода. Будет показано, каким образом собирать конвейеры (pipeline) для обработки исходного кода как данных, какие особенные методы при этом использовать. Кроме того, будет рассмотрен вопрос масштабирования процесса обработки кода на десятки и сотни тысяч репозиториев.
Цель освоения дисциплины

Цель освоения дисциплины

  • Ознакомление студентов с основными этапами обработки кода
  • Получение студентами практического опыта имплементации этих этапов
Планируемые результаты обучения

Планируемые результаты обучения

  • Понимание основных этапов работы с кодом как данными
  • Умение вести качественный проект на GitHub
  • Умение применять на практике эти знания - работа с git/GitHub API/классификатором языков программирования/с кодом в виде AST - в частности во время имплементации проект Поиск похожих разработчиков
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение. Почему появилась эта дисциплина?
  • Работа с git'ом. Как организован внутри?
  • Работа с git'ом. Существующие библиотеки, примеры работы, задание по работе с git для проекта Поиск похожих разработчиков.
  • Работа с git hosting'ами.
  • Работа с GitHub API. Задание по работе с GitHub API для проекта Поиск похожих разработчиков.
  • Классификация языков программирования.
  • Использование enry для классификации языков программирования. Задание по работе с классификатором языков программирования для проекта Поиск похожих разработчиков.
  • Работа с кодом в виде AST.
  • Изучение tree-sitter - библиотеки для извлечения AST из кода.
  • Изучение tree-sitter. Задание по работе с кодом в виде AST при использовании tree-sitter для проекта Поиск похожих разработчиков.
  • Масштабирование обработки исходного кода.
  • Проект GitBase - идеи, концепты, особенности реализации.
  • Проект jgit-spark-connector - идеи, концепты, особенности реализации.
  • Типичный пайплайн для работы с исходным кодом, раскрытый на примере проекта Поиск похожих разработчиков.
  • Как сделать качественный проект? От идеи до реализации с тестами, документацией, докер образами и т.д.
Элементы контроля

Элементы контроля

  • неблокирующий Задание по поиску похожих разработчиков
  • неблокирующий Задание по работе с GitHub API
  • неблокирующий Задание по работе с git
  • неблокирующий Задание по работе с классификатором языков программирования
  • неблокирующий Задание по работе с кодом в виде AST при использовании tree-sitter
Промежуточная аттестация

Промежуточная аттестация

  • 2022/2023 учебный год 4 модуль
    Оценка = (github_api * 0.15 + git * 0.25 + enry * 0.2 + tree_sitter * 0.25 + similar_dev_search * 0.15) * 8 + (tests + style_check + docker) * 2/3
Список литературы

Список литературы

Рекомендуемая основная литература

  • Allamanis, M., Barr, E. T., Devanbu, P., & Sutton, C. (2017). A Survey of Machine Learning for Big Code and Naturalness.

Рекомендуемая дополнительная литература

  • Lin, X. V., Wang, C., Zettlemoyer, L., & Ernst, M. D. (2018). NL2Bash: A Corpus and Semantic Parser for Natural Language Interface to the Linux Operating System.
  • Shin, R., Allamanis, M., Brockschmidt, M., & Polozov, O. (2019). Program Synthesis and Semantic Parsing with Learned Code Idioms.
  • Shin, R., Kant, N., Gupta, K., Bender, C., Trabucco, B., Singh, R., & Song, D. (2019). Synthetic Datasets for Neural Program Synthesis.

Авторы

  • Петрухина Анастасия Сергеевна