Диссертация по программированию — это не обзорный реферат с теорией алгоритмов, а исследование с реализованным программным продуктом, верифицированными экспериментами и измеримыми метриками производительности.
Особенности диссертации по программированию
Работа объединяет теоретическую и практическую части, причём последняя нередко весит больше в глазах научного руководителя. Обязателен репозиторий исходного кода или хотя бы описание архитектуры реализованной системы. Принципиальное отличие от, скажем, диссертации по информационным системам — акцент смещён с бизнес-процессов на алгоритмическую сложность, структуры данных и оценку вычислительной эффективности.
Требования научных руководителей, как правило, включают:
- сравнительный анализ не менее двух-трёх существующих решений с конкретными бенчмарками
- обоснование выбранного языка и парадигмы (ООП, функциональное, реактивное)
- диаграммы UML или аналогичную нотацию для архитектурных решений
Срезаются чаще всего на отсутствии воспроизводимого эксперимента: студент описывает алгоритм, но не приводит условий тестирования, объёма данных и конфигурации стенда — а без этого любые цифры ускорения или экономии памяти не имеют научной силы.
Примеры тем
- Разработка интерпретатора предметно-ориентированного языка для конфигурирования распределённых IoT-систем
- Оптимизация алгоритмов трассировки лучей на GPU с использованием CUDA и сравнительный анализ прироста производительности
- Применение метода динамического программирования для задачи балансировки нагрузки в микросервисной архитектуре
- Реализация компилятора подмножества языка C с генерацией байт-кода для виртуальной машины на основе стека
- Исследование методов статического анализа исходного кода для выявления уязвимостей класса инъекций на ранних этапах разработки
- Сравнительный анализ конкурентных примитивов в языках Go и Rust применительно к высоконагруженным серверным приложениям
- Разработка системы автоматического рефакторинга Python-кода на основе анализа абстрактного синтаксического дерева
Что входит в работу
Введение с постановкой задачи, обзор алгоритмов и смежных решений, архитектурный раздел с UML-диаграммами, описание реализации, глава с экспериментальным сравнением, заключение с выводами об эффективности.
Какие источники мы используем
Монографии Кормена «Алгоритмы: построение и анализ» и Страуструпа «Программирование. Принципы и практика использования C++», статьи из журналов ACM Transactions on Programming Languages and Systems, IEEE Transactions on Software Engineering, материалы конференций ICSE и PLDI.
Частые вопросы
Нужно ли прикладывать рабочий код к диссертации?
Большинство российских вузов допускают описание архитектуры и ключевых фрагментов в тексте, однако ВАК-ориентированные работы предпочтительно сопровождать ссылкой на публичный репозиторий или приложением с листингами.
Как правильно оформить сравнение алгоритмов, если у меня нет доступа к вычислительному кластеру?
Допустимо проводить эксперименты на локальной машине при строгом фиксировании конфигурации: модель CPU, объём оперативной памяти, версия компилятора и флаги оптимизации — воспроизводимость важнее масштаба стенда.
Можно ли выбрать функциональную парадигму как основу работы, если кафедра ориентирована на Java?
Можно, если теоретическая глава содержит чёткое обоснование: почему иммутабельность и чистые функции дают измеримое преимущество именно в вашей задаче, а не выбраны ради новизны.
Обязательна ли публикация статьи для защиты магистерской диссертации по программированию?
Формально требование зависит от регламента конкретного вуза; де-факто большинство технических факультетов МГУ, МФТИ, ИТМО и СПбГУ ожидают хотя бы одну публикацию в сборнике конференции или журнале из перечня ВАК.