-
Notifications
You must be signed in to change notification settings - Fork 3
Specification
Vadim Dyachkov edited this page Mar 10, 2020
·
1 revision
- Студенты самостоятельно реализуют одинаковый семестровый курсовой проект
- Проект состоит из последовательных этапов с фиксированным deadline
- Каждый этап является надстройкой над предыдущим
- Решение каждого этапа присылается студентом в виде pull request (PR) в открытый репозиторий на GitHub
- Автоматически прогоняются модульные тесты (TravisCI) для текущего этапа и результат публикуется в PR
- Автоматически производится статический анализ кода (FindBugs, PMD, checkstyle через CodeClimate) и результат публикуется в PR
- В случае успеха предыдущих этапов преподаватель проводит code review и пишет замечания
- Через несколько итераций PR закрывается с положительным или отрицательным результатом
Некоторые студенты заимствуют решения у товарищей и студентов прошлых лет:
- Цель образовательного процесса не достигается
- Оценки недостаточно объективны
Автоматизация аналитического процесса поиска заимствований:
- Больше самостоятельных реализаций — лучше качество образовательного процесса
- Определение степени заимствований — более объективная оценка
- UI с аутентификацией для конфигурирования отслеживаемых репозиториев
- Интеграция с GitHub — trigger процесса поиска на создание pull request (PR)
- Извлечение исходного кода потенциальных кандидатов (текущий этап и решения прошлых лет)
- Определение степени заимствований между кандидатами и исследуемым PR
- Ранжирование источников заимствований
- Формирование отчёта о заимствованиях
- Публикация отчёта в PR
- Проекты на языке Java (13)
- До 50 студентов
- До 10 этапов
- Объём каждого решения до 10 KLOC (без тестов)
- Организация на GitHub
- Проект/курс/репозиторий
- Учебный год
- Этап
- Индивидуальное решение/pull request
- Diff между двумя решениями последовательных этапов одного студента
- Аутентификация для изменений
- Публичный доступ на чтение
- Конфигурация организаций и репозиториев
- Ссылки на результаты анализа
- Доля “совпадений”
- Boost более ранних решений текущего этапа
- Граф pull request’ов с метаинформацией и весами дуг-заимствований
- Diff по клику на дугу
- Публичный Web Service в Облаке
- Функциональные тесты в “песочнице”
- Исходники сервиса на GitHub
- Инструкция по развёртыванию