Защиты магистров в Академическом университете

2012-06-10

8 июня я побывал на защитах магистерских диссертаций на кафедре МИТ СПбАУ в качестве рецензента одной из работ. Был хороший повод послушать защиты и позадавать вопросы. Это мой отчёт о защитах.

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

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

Стоит отметить работу комиссии, которая оценила работы достаточно объективно и взвешенно. Заслуживают уважения преподаватели СПбАУ, проявившие критическое отношение к своим собственным студентам, несмотря на их повысившийся общий уровень по сравнению с прошлым годом.

Дальше я привожу краткие описания защит, которые я послушал (по моим записям, поэтому возможны ошибки):

  • Александр Карташёв. Виртуализация для Android

    Хак системы виртуализации поверх одного ядра Linux с целью быстрого переключения и взаимодействия между контейнерами Android.

    Не очень ясно, зачем надо запускать несколько Android на одном девайсе, ведь изоляция приложений и система авторизации уже встроена в платформу Android. Сама работа потребовала внедрения во многие системные компоненты Android и Linux.

  • Артём Соколов. Анализ результатов тестов производительности системы MyFit

    Для имеющегося тестового фреймворка прикручен свой серверный компонент анализа статистики по производительности. Выдача через свой веб-интерфейс на основе подхаченного компонента графиков на JavaScript.

    Зачем интегрироваться с системой на стороне сервера через какие-то API, когда проще взять сырые данные и проанализировать их различными тулами для анализа логов? Рассказ был в основном про клиентскую часть, которая совсем не интересна и не является основной частью работы, насколько я понял.

  • Артём Бухонов. Рефакторинг тестов MyFit

    Есть «естественный» язык описания тестов с привязкой к реализующим их классам Java. Судя по примерам, я бы сказал, что язык противоестественный. Какие-то таблицы с кодами тестов и числовыми данными, и рядом не стоит с Cucumber. Для IntelliJ сделан рефакторинг переименования и перемещения реализующих тесты классов для конвенций имён MyFit внутри кода классов и их вызвов в тестах.

    Рассказ об обычной программистской задаче, не представляющей особой сложности, без обоснования принятых решений.

  • Алексей Гуревич. Оценка качества сборки геномных последовательностей

    Разработана своя метрика оценки качества сборки, являющаяся объединением существующих. Приведённые графики показывают, что она немного получше других на практических примерах. Своя разработанная программа позволяет работать с разными видами геномов.

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

  • Андрей Пржибельский. Алгоритм разрешения повторов по графу де Брюйна

    Задача сборки генома. Полученные начальные данные можно представить в виде некого графа де Брюйна. Часть пути известна, надо наилучшим способом восстановить путь при наличии в графе лишних и, возможно, ложных данных. Надо найти, как проходит путь заданной длины между определёнными вершинами.

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

  • Мария Давыдова. Конвертация БД типа «ключ-значение» с Java в событийный код на JavaScript под node.js

    В ходе переписывания кода с Java на JavaScript под node.js с его обратными вызовами и событиями были выделены типичные шаблоны кода.

    Java — быстрая, node.js — медленный. Последовательный код — понятный, код с обратными вызовами — очень запутанный. В постановке задачи предлагается испортить существующее нормальное решение. Надеюсь, что ради поддержки высокой нагрузки по числу одновременных соединений, а не ради повсеместной подростковой моды на node.js. Могу только посоветовать посмотреть на акторов в Java или сразу на Erlang.

  • Валерий Исаев. Классификация уравнений с использованием системы типов Haskell

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

    Тема весьма интересная. Но рассказ оставил много вопросов. Например, какие виды уравнений можно классифицировать в принципе? Какие есть ограничения у выбранного способа? Какова его практичность? Заинтересовавшись темой, я попросил выслать мне пояснительную записку и ознакомился с ней. К сожалению, она мало что мне пояснила.

  • Кристина Курьян. Исследование и реализация типизированного λ-исчисления с контролем наиболее общего типа

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

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

  • Светлана Марченко. Оптимизация хранения и обработки статистических данных на уровне хранилища

    Выполнено сравнение нескольких систем хранения и обработки данных на примере логов. Варьировались разные параметры, реализован тестовый фреймворк.

    Оптимизировался только один параметр — время обработки запроса. На мой взгляд, это достаточно узкая тема, учитывая, что в реальной жизни параметров обычно очень много: возможность масштабирования хранения и обработки, потребляемая память и пр. Сравнивалось только три системы. Было бы интереснее получить такой фреймворк, в который можно легко добавить ещё одну систему для сравнения и в итоге многокритериально сравнить десяток таких систем.

  • Александр Михайлов. Оптимизация непрерывного тестирования на основе статического и динамического анализа

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

    Подобной темой уже занимались мои знакомые. Вообще, кажется, что такие средства уже должны появиться в готовом к использованию виде для всех основных языков. Тем не менее, даже у нас в JetBrains они не применяются. В этой работе применяется локальный анализ, поэтому часть тестов не находится. Насколько я понял, рассмотрены и отчасти использованы существующие алгоритмы. Динамический анализ в работе на самом деле не рассматривается.

  • Екатерина Полищук. Интеграция Emacs Lisp и команд Emacs в IntelliJ IDEA

    Разработан интерпретатор Emacs Lisp на Java и расширение для IntelliJ, позволяющее работать с окнами и другими элементами интерфейса IDE как с редактором Emacs, использовать конфигии и сочетания клавиш.

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

  • Павел Синяй. Разработка системы позиционирования самовсплывающих донных станций

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

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