Курс посвящен применению интеллектуальных методов (machine learning) и средств автоматизации в информатике (computer science) и программной инженерии (software engineering).

В первой части курса студентам предлагается познакомиться с методами автоматического создания программ с применением грамматик, предметно-ориентированных языков, машинного обучения и NLP, с методами верификации и тестирования сложных систем с применением автоматических и модельно-ориентированных подходов, средств детерминированной и стохастической проверки моделей.

Вторая часть курса посвящена выполнению небольшого исследовательского проекта, направленного на изучение выбранной темы в автоматизации программирования, проведении обзора и анализе выбранной публикации, повторения экспериментальных результатов.

Форма отчетности по курсу: дифференцированный зачет.

  1. Введение в автоматические методы разработкии. Организационные вопросы, программа курса. Критерии оценки.
  2. Предметно-ориентированные языки. DSL. Грамматики. Парсеры. Разработка языков.
  3. Анализ кода репозиториев. Индукция и синтез программ. Задача программирования на естественном языке. Задача для робота Karel
  4. Методы синтеза программ. Элементы обучения с подкреплением. Beam search. Execution. Partial programs, Meta-induction. Language models
  5. Введение в тестирование. Моделирование и верификация программ. Модели конечных автоматов, pre- post- условий. Генерация тестов. Мутационное тестирование
  6. Автоматизация тестирования. Фаззинг. Тестирование свойств. Инварианты. Применения к различным задачам
  7. Формальные методы верификации. Введение в блокчейн и смарт контракты. Применение метода “Проверка модели” для верификации блокчейн систем. Статистические методы верификации.
  8. Систематичекий обзор. Поиск и изучение литературы. Systematic Literature Review (SLR). Mapping Study. Link Review.
  9. Проблемы воспроизводимости в научных исследованиях. Методы и программные средства автоматизации воспроизводимых экспериментов. Оформление и требования к эксперименту. Анализ результатов.

Оценка за дифференцированный зачет по курсу выставляется преподавателем с учетом баллов, набранных при основении курса в течение семестра.

Итоговые баллы = Лабораторные работы (50%) + исследовательский проект (50%).

Всего для получения оценки отл(10) нужно 60 баллов из 82 максимально возможных.

Лабораторные работы

  • Лабораторная работа по DSL - создание языка для Karel (до 21 февраля)
  • Лабораторная работа по синтезу программ - NPS для Karel (до 17 апреля)
  • Лабораторная работа по metamorphic testing (до 13 марта)
  • Лабораторная работа по верификации блокчейн (до 27 марта)

Каждая лабораторная работа дает до 10 баллов при сдаче вовремя. 30 баллов - это 50% оценки. Максимум 40 баллов - это 67%. Пропуск срока по лабораторной - х0.5.

Лабораторные работы поделены на задания. За каждое задание засчитывается указанное в нем число баллов. Из суммы баллов за задания лабораторную вычитается 50% максимальной суммы, результат умножается на 2. Нулевая и отрицательная оценки не засчитываются

Ориентировочные критерии оценки заданий лабораторных работ:

  1. правильность выполнения задач и ответов на вопросы, сформулированные в лабораторной работе
  2. полнота решения, доля решенных пунктов и отвеченных вопросов
  3. понимание примененных методов и способность аргументировать решение и разобраться и исправить ошибки

Сдача экстерном

Для уточнения возможности и условий сдачи курса экстерном, свяжитесь с лектором курса в течение первых четырех недель курса.

Исследовательский проект

Проект включает два задания на выбранную и согласованную тему: проведение систематического обзора и повторение вычислительного эксперимента.

Ориентировочные критерии оценки исследовательского проекта:

  1. степень погружения и освоения выбранной темы проекта
  2. следование методам проведения исследований, наличие и качество выполнения сопровождающих проект артефактов (таблиц, отчетов, слайдов)
  3. научная ценность проведенного исследования, пригодность результатов для представления на научной конференции

Баллы за исследовательский проект складываются из баллов за выбор и обоснование темы (5 баллов), выполнение систематического обзора (10 баллов), повторение эксперимента (10 баллов), выступление с финальным докладом (5 баллов). Итого за проект - максимум 30 баллов.

Из суммы баллов за исследовательский проект вычитается 50% от максимальной суммы, результат умножается на 2. Нулевая и отрицательная оценка не засчитывается и считается равной нулю.

Посещаемость, пропуски и устный зачет

При пропусках занятий более 2-х раз или недостаточном количестве баллов (в сумме менее 24 баллов) к концу двенадцатой недели курса, или невыполнении исследовательского проекта, для получения оценки по курсу нужно пройти устный опрос по билетам по темам курса (добавит до 12 баллов до оценки удовл., на усмотрение преподавателя). Если и в этом случае баллов недостаточно, невыполненные задания по курсу могут быть сделаны к пересдаче.

Информация о пересдачах

Система оценивания при пересдаче курса, в том числе при восстановлении и переводе, совпадает с системой оценивания при обычном изучении курса.

Доделанные задания по курсу нужно отправить за два дня до даты пересдачи для их своевременной проверки.

Даты и время проведения пересдач по курсу смотрите в личном кабинете или следите за объявлениями кафедры.

Досрочная сдача курса

В случае вынужденного отсутствия по уважительной причине в период проведения аттестации по курсу (сдачи заданий, сдачи проекта, устный зачет), необходимо заранее уведомить о предполагемом отсутствии и согласовать до начала зачетной недели дату аттестации.

Систематический обзор литературы в определенной области - это метод исследования предметной области с целью получения ответов на интересующие вопросы. Систематический обзор, при должном исполнении, может быть отнесен к методам исследований, которые допускают проверку и повторение результатов.

Порядок выполнения систематического обзора приведен в таблице ниже. Результаты систематического обзора оформляются в виде набора документов

  1. полный список источников (long list)
  2. список отобранных источников (short list)
  3. отчет с результатами
Что делатьВ чем результатГде фиксируется результат
1.Сформулиовать цели проведения обзора Формулировка цели, перечень вопросов (Research Questions, напр. RQ1, RQ2..) Отдельный раздел в отчете с результатами
2.Описать протокол поиска источников Приведен перечень баз данных, библиографический и реферативных баз, сформулированы критерии поиска в них (поисковые запросы) Отдельный раздел в отчете с результатами
3.Сформулировать критерии выбора источников Требования, предъявляемые к источникам и их содержанию для включения в обзор (полезна ли информация для ответа на вопросы, качественная ли она и т.д.) Отдельный раздел в отчете с результатами
4.Выполнить поиск источников согласно протоколу Полный список найденных источников Таблица с полным списком в отдельном документе
5.Отобрать источники из полного списка, при необходимости вернуться к п.4 Список отобранных источников Таблица с отобранными источниками в отдельном документе
6.По каждому вопросу исследования собрать информацию из отобранных источников Ответ на вопрос с отсылками к источникамДля каждого вопроса - отдельный подраздел
7.Подготовить заключение: удалось ли ответить на вопросы, сделать выводы Выводы о достижении цели обзора, рекомедации по использованию результатов обзора Отдельный раздел отчета с результатами

Литература:

  1. 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.
  2. См. также слайды.

Повторение опубликованных ранее результатов другими исследователями - важная процедура в научном исследовании, направленная на выявления неточностей, расхождений, неполноты в опубликованных результатах исследований и методах и достижения.

Порядок повторения результатов по теме приведен в таблице ниже. Результаты фиксируются в следующих документах

  1. отчет о повторении результатов
  2. исходный код и данные

Требования к статье для повторения

  1. должен быть доступен исходный код для основного результата статьи
  2. доступны данные, использованные в статье
  3. результат отражает state-of-the-art
#Что делатьВ чем результатГде фиксируется результат
1.Найти и согласовать статью, актуальную для темыВыбрана статья для повторения результатов. В электронной почте, в первом разделе отчета
2.Получить и сохранить код и данные, проверить возможность использованияГотовый к исполнению код, данные для проведения экспериментаИсходный код и данные (выложены для доступа)
3.Повторить эксперимент по описаннию в статьеВыявлены отклонения и неточности в описании эксперимента, упущения и пропускиРаздел в отчете о повторении результатов
4.Сравнить результаты с полученными в статьеПолучены собственные количественные результаты эксперимента, указаны расхождения с результатами в статьеРаздел в отчете о повторении результатов
5.Сделать выводы о повторяемости результатов статьиВыводы о повторяемости результатов статьи и возможности их использованияРаздел в отчете о повторении результатов

Литература

  1. Geir Kjetil Sandve, Anton Nekrutenko, James Taylor, Eivind Hovig. Ten Simple Rules for Reproducible Computational Research
  2. См. также сайт reproducibleresearch.net

Хританков Антон Сергеевич, соавтор курса, читает разделы по машинному обучению и исследовательскому проекту, prog.autom [at] gmail.com

Федотов Иван Андреевич, соавтор курса, рассказывает про верификацию распределенных блокчейн систем и проверку моделей.

Якушева Софья Федоровна, соавтор курса, читает разделы по тестированию и верификации.