• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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.