Лучшие магистерские диссертации выпускников программы «инструменты разработки и анализа программ»
За два года обучения студенты нашей программы получают глубокие знания в области создания методов обеспечения качества и проектирования инструментов для разработчиков ПО. В подкрепление этих слов — рассказы выпускников Тимура Деменева и Никиты Морозова об их магистерских диссертациях — системе автоматизации проверки знаний и платформе для модульной компиляции и динамической доставки кода.
  • Тимур Деменев
Система автоматизации проверки заданий на основе спецификаций

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

В отличие от аналогов моя система не требует дополнительных усилий от пользователя (например, добавления инвариантов циклов) и осуществляет проверку  на основе требований, а не тестовых сценариев. Разработанный инструмент подходит для преподавателей и был апробирован на реальных работах студентов: с его помощью удалось ускорить проверку заданий и находить пример входных данных, приводящий к неправильному поведению программы.
  • Никита Морозов
Разработка платформы для модульной компиляции и динамической доставки кода в Flutter-приложениях

Мобильные приложения — неотъемлемая часть повседневной жизни, но из-за санкций и блокировок доступ к ним легко потерять. Эту проблему решает платформа для модульной компиляции и динамической доставки кода. Она состоит из двух частей: модификации компилятора Dart, позволяющей собирать отдельные модули и подключать их во время выполнения, и системы доставки, которая двоичным разностным алгоритмом формирует сжатые патчи и устанавливает их без релиза в магазине.

Сочетание этих подходов выигрывает в производительности и удобстве разработки у встраиваемых интерпретаторов и BDUI-решений. Платформа позволяет не только доставлять обновления, но и создавать дополнения — например, плагины к редакторам или контент для игр.