[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