Бакалавриат
2021/2022
Разработка IDE
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Кто читает:
Департамент программной инженерии
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Васильев Андрей Дмитриевич
Язык:
русский
Кредиты:
5
Контактные часы:
60
Программа дисциплины
Аннотация
IDE - интегрированная среда разработки - основной инструмент почти каждого современного программиста, обеспечивающий исполнение ключевых задач разработки от редактирования исходного кода до отладки и анализа производительности. Сама IDE также является программным продуктом, процесс разработки которого достаточно специфичен по сравнению с продуктами других типов. Данная дисциплина познакомит студентов с особенностями разработки именно таких программ.
Цель освоения дисциплины
- Ознакомление студентов с алгоритмами, структурами данных и методами, лежащими в основе работы современных IDE и средств статического анализа
- Получение студентами навыков исследовательской работы, предполагающей изучение и разработку новых специфических алгоритмов, необходимых для решения задач, возникающих в ходе разработки IDE
- Получение студентами практических навыков решения прикладных задач, возникающих в ходе разработки IDE
Планируемые результаты обучения
- Понимание алгоритмов и структур данных.
- Умение программировать на языке высокого уровня.
Содержание учебной дисциплины
- Инструментальные средства разработки. Введение в историю и архитектуру IDE.
- Структуры данных для работы с текстом. Текстовый редактор и разметка документа.
- Виртуальная файловая система, понятия модели PSI и проектной модели.
- Введение в теорию формальных языков.
- Лексический анализ.
- Синтаксический анализ, абстрактные синтаксические деревья.
- Семантический анализ, таблицы символов и разрешение ссылок.
- Введение в системы типов и вывод типов.
- Введение в статический анализ.
- Абстрактная интерпретация, анализ потока управления и анализ потока данных.
- Межпроцедурный анализ и граф вызовов.
- Помощь при наборе и автодополнение кода. Поиск и навигация по коду.
- Модификация абстрактного синтаксического дерева. Генерация кода на основе абстрактного синтаксического дерева. Автоформатирование. Автоматический рефакторинг.
- Отладчик и отладочные символы, вычисление выражений во время отладки.
- Инструментирование, профилирование и трассировка.
Элементы контроля
- Домашний проект 1Разработка группой студентов небольшого текстового редактора с подсветкой синтаксиса. Выполняется группой в 2-3 студента.
- Домашний проект 1Разработка группой студентов плагина с анализом для JetBrains IDE. Выполняется группой в 2-3 студента.
- Экзамен
Промежуточная аттестация
- 2021/2022 учебный год 2 модульРезультирующая оценка вычисляется по формуле: О_результирующая = min(0,4*О_экзамен + 0,4*О_проект1 + 0,4*О_проект2; 10)
Список литературы
Рекомендуемая основная литература
- 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.