Магистратура
2021/2022
Разработка IDE
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору (Программирование и анализ данных)
Направление:
01.04.02. Прикладная математика и информатика
Кто читает:
Департамент информатики
Когда читается:
1-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Близнец Иван Анатольевич
Прогр. обучения:
Программирование и анализ данных
Язык:
русский
Кредиты:
4
Контактные часы:
30
Программа дисциплины
Аннотация
Дисциплина "Разработка IDE" призвана познакомить студентов с современным подходом к созданию интегрированных средств разработки. В рамках курса рассматриваются основные модули IDE: лексер, парсер, анализатор кода, локальные и глобальные кеши, навигация по коду, модификация кода и рефакторинги. Помимо теоретического обзора студенты в течение курса будут поэтапно разрабатывать собственное IDE. Курс создан и реализуется при поддержке компании JetBrains. Является дисциплиной по выбору.
Цель освоения дисциплины
- Ознакомление студентов с алгоритмами, структурами данных и методами, лежащими в основе работы современных IDE и средств статического анализа
- Получение студентами навыков исследовательской работы, предполагающей изучение и разработку новых специфических алгоритмов, необходимых для решения задач, возникающих в ходе разработки IDE
- Получение студентами практических навыков решения прикладных задач, возникающих в ходе разработки IDE
Планируемые результаты обучения
- Понимание алгоритмов и структур данных.
- Умение программировать на языке высокого уровня.
Содержание учебной дисциплины
- Инструментальные средства разработки. Введение в историю и архитектуру IDE.
- Структуры данных для работы с текстом. Текстовый редактор и разметка документа.
- Виртуальная файловая система, понятия модели PSI и проектной модели.
- Введение в теорию формальных языков.
- Лексический анализ.
- Синтаксический анализ, абстрактные синтаксические деревья.
- Семантический анализ, таблицы символов и разрешение ссылок.
- Введение в системы типов и вывод типов.
- Введение в статический анализ.
- Абстрактная интерпретация, анализ потока управления и анализ потока данных.
- Межпроцедурный анализ и граф вызовов.
- Помощь при наборе и автодополнение кода. Поиск и навигация по коду.
- Модификация абстрактного синтаксического дерева. Генерация кода на основе абстрактного синтаксического дерева. Автоформатирование. Автоматический рефакторинг.
- Отладчик и отладочные символы, вычисление выражений во время отладки.
- Инструментирование, профилирование и трассировка.
Элементы контроля
- Проект 1Разработка группой студентов небольшого текстового редактора с подсветкой синтаксиса. Выполняется группой в 2-3 студента.
- Проект 2Разработка группой студентов плагина с анализом для JetBrains IDE. Выполняется группой в 2-3 студента.
- Экзамен
Промежуточная аттестация
- 2021/2022 учебный год 4 модуль0.4 * Экзамен + 0.3 * Проект 2 + 0.3 * Проект 1
Список литературы
Рекомендуемая основная литература
- Pierce, B. C. (2002). Types and Programming Languages. Cambridge, Mass: The MIT Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=70966
Рекомендуемая дополнительная литература
- Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2014). Compilers: Pearson New International Edition : Principles, Techniques, and Tools: Vol. Second edition. Pearson.