apmdd:course2022

Автоматизация программирования

Курс кафедры Алгоритмов и технологий программирования (https://wiki.atp-fivt.org) в магистратуре.

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

Темы курса:

  1. Модельно-ориентированные методы разработки и предметно-ориентированные языки (DSL)
  2. Синтез программ по примерам средствами машинного обучения
  3. Автоматизация тестирования и верификации программ
  4. Верификация систем распределенного реестра
НеделяТемаЗадания
06.02.2023 Вводная лекция. О курсе. Что такое автоматизация в программировании. Программа, цели. Как сдавать. Критерии оценки.
Семинар. Актуальные проблемы и анонсы тем курса
13.02.2023 Тема. Предметно-ориентированные языки. DSL. Грамматики. Парсеры. Разработка языков.
Семинар. Разработка DSL для робота Karel на textX
20.02.2023 Тема. Анализ кода репозиториев. Индукция и синтез программ. Задача программирования на естественном языке. Задача для робота Karel.
Семинар. (демо обученной модели - WikiSQL или другой)
Лабораторная работа 1. Разработка DSL.
27.02.2023 Тема. Методы синтеза программ. Элементы обучения с подкреплением. Beam search. Execution. Partial programs, Meta-induction. Language models.
Семинар. Пример text2code на WikiSQL или другой
06.03.2023 Тема. Введение в тестирование. Моделирование и верификация программ. Модели конечных автоматов, pre- post- условий. Генерация тестов. Мутационное тестирование
Семинар. Демо написание модульных тестов и анализ кода
13.03.2023 Тема. Автоматизация тестирования. Фаззинг. Тестирование свойств. Инварианты. Применения к различным задачам
Семинар. Демо тестирование инвариантами
Лабораторная работа 3. Методы автоматического тестирования, инварианты
20.03.2023 Тема. Формальные методы верификации. Введение в блокчейн и смарт контракты. Применение метода проверки моделей (model checking) для верификации блокчейн систем.
Семинар. Лабораторная работа. Верификация многосторонних соглашений
27.03.2023 Тема. Статистические методы верификации.
Семинар. Лабораторная работа. Верификация многосторонних соглашений
Лабораторная работа 4. Верификация многосторонних соглашений
03.04.2023 Тема. Систематичекий обзор (SLR). Поиск и изучение литературы. Mapping Study. Link Review. Разбор примера SLR. Постановка и уточнение вопросов исследования.
Семинар. Доклады выбранных тем исследования (по 2-3 мин)
Выбрать тему в рамках курса и примерные вопросы исследования. Выступить с докладом на 2-3 мин, рассказ про выбранную тему
10.04.2023 Тема. Проблемы воспроизводимости в научных исследованиях. Оформление и требования к эксперименту. Анализ результатов. Воспроизведение эксперимента. Система mldev, DVC и др
Семинар. Доклады результатов обзора
Создать папку на гугл диске в ней и прислать по почте:
- отчет: вопросы исследования. критерии поиска.
- лонг лист
- шорт лист обзора (10+ наименований)
Сделать доклад на 5 мин с результатами обзора, анализом и предлагаемой к повторению статьей
17.04.2023 Семинар. Подробный разбор статей по темам и подготовка эксперимента. Разобрать 1-2 статьи вместе с кодом Лабораторная работа 2. Синтез программ - NPS для Karel
24.04.2023 Тема. Уточняется.
Q&A сессия. Консультация и доработки по проектам. Отработка выступлений. Результаты ревью
Краткий доклад (5 мин.) с предварительными результатами эксперимента повторения
01.05.2023
08.05.2023
15.05.2023 Итоговые представления докладов исследовательских проектов Выступление на семинаре. 10+5 мин
22.05.2023 Дифференцированный зачет

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

Лабораторные по курсу:

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

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

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

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

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

  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
  • apmdd/course2022.txt
  • Last modified: 2023/02/04 15:12
  • by user