[prac] Задание по практикуму для групп СП

Vladislav Ivanishin vlad at ispras.ru
Wed Mar 7 08:13:42 MSK 2018


Добрый день, уважаемые студенты!

В этом семестре в качестве практикума студентам групп 427 и 428 предлагается
в составе команд выполнить проекты, связанные с курсом "Конструирование
компиляторов". При этом предполагается, что работа над проектами ведётся с
использованием системы контроля версий Git [1] и списков рассылки.

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

Списки рассылки (mailing lists) позволят участникам команды
координировать работу над проектом и обсуждать предлагаемые изменения,
преподавателям - контролировать ход выполнения практикума, а участникам
других команд - возможность подписываться и знакомиться с дискуссиями.
Списки рассылки предоставляют архив сообщений, аккумулирующий со
временем базу знаний о проекте. Списки рассылок являются стандартным
инструментом взаимодействия, принятым во многих проектах по разработке
ПО, в особенности, ПО с открытым исходным кодом.

Использование Git и списков рассылки является обязательным элементом
практикума. Участники команды должны использовать предоставленный
Git-репозиторий для синхронизации, и командный список рассылки - для
общения. Приватное общение между участниками команды без необходимости
во время выполнения проектов не поощряется (см. [3]). Наличие
осмысленной активности в списках рассылки является, наряду со степенью
завершённости выполненных задач и проекта в целом, одним из основных
критериев при выставлении оценки за курс. Таким образом упрощается
оценка преподавателями вклада участников.

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

Общий план практикума:

1. Студенты делятся на команды и выбирают тему проекта для команды. К
   2018-03-12 23:59 MSK (можно раньше) необходимо сообщить составы
   команд и темы в сообщении в список рассылки sp-prac-18 [2] с пометкой
   `[новая команда]' в теме письма. Предполагаемое число участников
   команд -- от 3 до 5, в зависимости от сложности проекта. Каждый
   студент должен входить ровно в одну команду. Использование списка
   рассылки для координации поощряется и может помочь избежать
   конфликтов при выборе темы, но на данном этапе обязательным не
   является. Тема команды определяется по последнему письму с пометкой
   `[новая команда]', отправленному до 2018-03-12 23:59 MSK
   (включительно). При наличии двух команд, выбравших одну и ту же тему,
   она отдаётся команде, пославшей письмо с пометкой `[новая команда]' в
   список рассылки раньше.

2. Преподаватели утверждают составы и размеры команд и заводят отдельный
   список рассылки и репозиторий для каждой команды.

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

   По результатам второй недели в рассылке команды должен появиться план
   проекта - письмо с пометкой `[план]', содержащее список задач,
   выполнение которых запланировано в рамках проекта, и предварительное
   распределение задач по времени (с гранулярностью в одну неделю) и
   между участниками. На каждую неделю должна быть запланирована работа
   над хотя бы одной задачей. Все участники должны быть вовлечены.

   Дальнейшие изменения плана должны также сопровождаться
   соответствующей коммуникацией с пометкой `[план]' в списке рассылки.

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

4. В течение последующих недель команды работают над проектом. О сроке
   окончания работ будет объявлено в ближайшее время (ориентировочно два
   дня до даты зачёта/экзамена). Требуется по меньшей мере поддерживать
   следующие инварианты: (1) "в основную ветку репозитория не попадают
   патчи, не прошедшие обсуждения в рассылке" и (2) "история на основной
   ветке не перетирается при помощи force-push или rebase".

   Поощряется использование rebase на своих локальных ветках до push для
   поддержания целостности и последовательности истории коммитов.
   Поощряется использование единого стиля сообщений в коммитах и
   добавление относительно подробных описаний сделанных изменений.

5. Команды составляют заключительные отчёты о выполненной работе и
   отправляют их в командный список рассылки с пометкой `[отчёт]' в теме
   письма. Отчёт должен включать в себя описание статуса всех изначально
   запланированных задач, общее состояние готовности проекта и оценку
   его успешности.

6. Встреча с выставлением оценок в зачётки.

Предполагается, что темы проектов таковы, что команды могут работать
изолированно. Однако обсуждение тем, которые могут быть интересны участникам
других команд (вопросы по QBE, UNIX, git, ssh, использованию и настройке email
клиентов и т.д.), имеет смысл проводить в рассылке prac-sp-18 [2].

Возможные темы проектов:
- подготовить задачу построения SSA-формы в духе задач из домашнего задания;
- подготовить задачу выделения регионов в духе задач из домашнего задания;
- исследовать быстрые алгоритмы поиска доминаторов и границы доминирования,
  подготовить задачу в духе задач из домашнего задания;
- составить документацию на QBE для будущих поколений студентов и предложить
  генерацию web-based тэгов в духе mozilla dxr/doxygen/woboq для
  compilers.ispras.ru;
- написать интерфейсы (bindings) к QBE для другого языка программирования;
- визуализация алгоритмов из курса;
- разработать систему плагинов для QBE, позволяющую запускать проходы из
  динамически подгружаемых библиотек;
- предложение своих идей для проектов приветствуется (нужно успеть
  обсудить на первой неделе).

Пожалуйста, подпишитесь на список рассылки prac-sp-18 [2] и передайте товарищам,
которые не были зарегистрированы в ejudge.

[1]: https://git-scm.com
[2]: https://compilers.ispras.ru/cgi-bin/mailman/listinfo/prac-sp-18
[3]: https://producingoss.com/en/producingoss.html#avoid-private-discussions

-- 
Влад


More information about the prac-sp-18 mailing list