Автоматизация программирования весна 2026
Содержание
Описание
Курс посвящен применению интеллектуальных методов (machine learning) и средств автоматизации в информатике (computer science) и программной инженерии (software engineering).
В первой части курса студентам предлагается познакомиться с методами автоматического создания программ с применением грамматик, предметно-ориентированных языков, машинного обучения и NLP, с методами верификации и тестирования сложных систем с применением автоматических и модельно-ориентированных подходов, средств детерминированной и стохастической проверки моделей.
Вторая часть курса посвящена выполнению небольшого исследовательского проекта, направленного на изучение выбранной темы в автоматизации программирования, проведении обзора и анализе выбранной публикации, повторения экспериментальных результатов.
Форма отчетности по курсу: дифференцированный зачет.
Альтернативные варианты сдачи курса
- Сдача экстерном
Для уточнения возможности и условий сдачи курса экстерном, свяжитесь с лектором курса в течение первых четырех недель курса.
- Перезачет
Курс может быть перезачтен, если он уже был пройден с оценкой "хорошо" или "отлично". В противном случае курс необходимо сдать повторно.
Система оценивания
- Оценка за дифференцированный зачет по курсу выставляется преподавателем с учетом баллов, набранных при основении курса в течение семестра.
- Итоговые баллы = Лабораторные работы (50%) + исследовательский проект (50%).
- Всего для получения оценки отл(10) нужно 60 баллов из 82 максимально возможных.
- Каждая лабораторная работа дает до 10 баллов при сдаче вовремя. 30 баллов - это 50% оценки. Максимум 40 баллов - это 67%. Пропуск срока по лабораторной - штраф 50%. Если за лабораторную набрано менее 50% баллов, они не засчитываются.
- При пропусках занятий более 2-х раз или недостаточном количестве баллов (в сумме менее 24 баллов) к концу двенадцатой недели курса, или невыполнении исследовательского проекта, для получения оценки по курсу нужно пройти устный опрос по билетам по темам курса (добавит до 12 баллов до оценки удовл., на усмотрение преподавателя). Если и в этом случае баллов недостаточно, невыполненные задания по курсу могут быть сделаны к пересдаче.
Сдача лабораторных работ
Темы
- Лабораторная работа 0 вступительная - автоматические методы (до XX.XX)
- Лабораторная работа 1 по DSL - создание языка для Karel (до XX.XX)
- Лабораторная работа 2 по синтезу программ - NPS для Karel (до XX.XX)
- Лабораторная работа 3 по metamorphic testing (до XX.XX)
- Лабораторная работа 4 по верификации блокчейн (до XX.XX)
Каждая лабораторная работа дает до 10 баллов при сдаче вовремя. 30 баллов - это 50% оценки. Максимум 40 баллов - это 67%. Пропуск срока по лабораторной - штраф в половину баллов.
Лабораторные работы поделены на задания. За каждое задание засчитывается указанное в нем число баллов. Если за лабораторную набрано менее 50% баллов, они не засчитываются.
Ориентировочные критерии оценки заданий лабораторных работ:
- правильность выполнения задач и ответов на вопросы, сформулированные в лабораторной работе,
- полнота решения, доля решенных пунктов и отвеченных вопросов,
- понимание примененных методов и способность аргументировать решение и разобраться и исправить ошибки.
Исследовательский проект
Проект включает два задания на выбранную и согласованную тему: проведение систематического обзора и повторение вычислительного эксперимента.
Ориентировочные критерии оценки исследовательского проекта:
- степень погружения и освоения выбранной темы проекта
- следование методам проведения исследований, наличие и качество выполнения сопровождающих проект артефактов (таблиц, отчетов, слайдов)
- научная ценность проведенного исследования, пригодность результатов для представления на научной конференции
Баллы за исследовательский проект складываются из баллов за выбор и обоснование темы (5 баллов), выполнение систематического обзора (10 баллов), повторение эксперимента (10 баллов), выступление с финальным докладом (5 баллов). Итого за проект - максимум 30 баллов.
Из суммы баллов за исследовательский проект вычитается 50% от максимальной суммы, результат умножается на 2. Нулевая и отрицательная оценка не засчитывается и считается равной нулю.
Систематический обзор
Систематический обзор литературы в определенной области - это метод исследования предметной области с целью получения ответов на интересующие вопросы. Систематический обзор, при должном исполнении, может быть отнесен к методам исследований, которые допускают проверку и повторение результатов.
Порядок выполнения систематического обзора приведен в таблице ниже. Результаты систематического обзора оформляются в виде набора документов
- полный список источников (long list)
- список отобранных источников (short list)
- отчет с результатами
| № | Что делать | Результат | Отчетность |
|---|---|---|---|
| 1 | Сформулировать цели проведения обзора | Формулировка цели, перечень вопросов (Research Questions, напр. RQ1, RQ2..) | Отдельный раздел в отчете с результатами |
| 2 | Описать протокол поиска источников | Приведен перечень баз данных, библиографический и реферативных баз, сформулированы критерии поиска в них (поисковые запросы) | Отдельный раздел в отчете с результатами |
| 3 | Сформулировать критерии выбора источников | Требования, предъявляемые к источникам и их содержанию для включения в обзор (полезна ли информация для ответа на вопросы, качественная ли она и т.д.) | Отдельный раздел в отчете с результатами |
| 4 | Выполнить поиск источников согласно протоколу | Полный список найденных источников | Таблица с полным списком в отдельном документе |
| 5 | Отобрать источники из полного списка, при необходимости вернуться к п.4 | Список отобранных источников | Таблица с отобранными источниками в отдельном документе |
| 6 | По каждому вопросу исследования собрать информацию из отобранных источников | Ответ на вопрос с отсылками к источникам | Для каждого вопроса - отдельный подраздел |
| 7 | Подготовить заключение: удалось ли ответить на вопросы, сделать выводы | Выводы о достижении цели обзора, рекомедации по использованию результатов обзора | Отдельный раздел отчета с результатами |
Литература:
- Kitchenham, B.A. and S. Charters (2007) Guidelines for performing systematic literature reviews in software engineering, Technical Report EBSE-2007-01, School of Computer Science and Mathematics, Keele University.
- См. также слайды.
Темы курса
- Введение в автоматические методы разработкии. Организационные вопросы, программа курса. Критерии оценки.
- Предметно-ориентированные языки. DSL. Грамматики. Парсеры. Разработка языков.
- Анализ кода репозиториев. Индукция и синтез программ. Задача программирования на естественном языке. Задача для робота Karel
- Методы синтеза программ. Элементы обучения с подкреплением. Beam search. Execution. Partial programs, Meta-induction. Language models
- Введение в тестирование. Моделирование и верификация программ. Модели конечных автоматов, pre- post- условий. *Генерация тестов. Мутационное тестирование
- Автоматизация тестирования. Фаззинг. Тестирование свойств. Инварианты. Применения к различным задачам
- Формальные методы верификации. Введение в блокчейн и смарт контракты. Применение метода “Проверка модели” для верификации блокчейн систем. Статистические методы верификации.
- Систематичекий обзор. Поиск и изучение литературы. Systematic Literature Review (SLR). Mapping Study. Link Review.
- Проблемы воспроизводимости в научных исследованиях. Методы и программные средства автоматизации воспроизводимых экспериментов. Оформление и требования к эксперименту. Анализ результатов.