Онлайн проверка кода студентов прямо в браузере: Apricot (Априкот) компилирует решение, прогоняет тесты преподавателя в изолированном контейнере и выставляет балл в ведомость. Студенту не нужно ничего устанавливать, преподавателю — скачивать архивы и разворачивать окружение. Python, C++, Java, Go, Bash, SQL, Git, Docker, ML. Работает на кафедрах МФТИ, ВШЭ, МГТУ и Центрального университета — курсы до 400 студентов.
● МФТИ, ВШЭ, МГТУ, Центральный университет · курсы до 400 человек
Что происходит с посылкой студента и почему ручная проверка не масштабируется.
Онлайн проверка кода — это автоматическая проверка решений студентов прямо в браузере, без скачивания архивов и запуска программ на своей машине. Студент отправляет код, система компилирует его, прогоняет тесты преподавателя в изолированном контейнере и возвращает балл вместе с логом. Преподаватель открывает только те работы, где действительно нужен человек.
Ручная проверка ломается на объёме. Чтобы оценить одно решение честно, преподаватель разворачивает окружение, компилирует чужой код, запускает несколько наборов входных данных и сверяет вывод. Это 10–15 минут на студента. На потоке в двести человек выходит неделя чистого времени — и так после каждого дедлайна. Половина этого времени уходит на решения, которые просто не компилируются.
Каждая посылка попадает в очередь и выполняется в отдельном контейнере с лимитами по процессору, памяти и сети. Система собирает решение, запускает тесты и сравнивает результат с эталоном. Балл сразу попадает в ведомость курса — со штрафами за просрочку дедлайна и весовыми коэффициентами, которые задал преподаватель. Студент видит, какие тесты прошли, а какие упали и на чём именно.
Компиляция и запуск происходят на стороне платформы, в одинаковом для всех окружении. Классический спор «у меня локально работает» закрывается сам собой: и преподаватель, и студент смотрят на один и тот же лог одного и того же прогона.
Три этапа — от создания задания до балла в ведомости.
Берёт готовый шаблон или подключает свои тесты: наборы входных данных, эталонные решения, лимиты по времени и памяти, дедлайны и штрафы за просрочку.
Загружает файл или присылает ссылку на Git-репозиторий — через браузер, без установки компиляторов и окружения. Попытки не ограничены.
Система собирает код в изолированном контейнере, прогоняет тесты и записывает балл в ведомость. Студент видит подробный лог каждой попытки.
Проверка запускается в контейнерах, поэтому подключить можно почти любой язык или инструмент с CLI.
Классические задачи на алгоритмы и структуры данных: система компилирует решение, прогоняет наборы тестов и следит за лимитами времени и памяти.
Запрос студента выполняется на настоящей базе, результат сравнивается с эталонной выборкой — а не с текстом запроса.
Проверка структуры истории, веток и коммитов: система разбирает граф репозитория и сверяет его с заданием.
Сборка образов, стеки docker-compose, Kubernetes-манифесты и CI/CD-пайплайны — с запуском и проверкой поведения.
Решение студента прогоняется на отложенной выборке, оценка выставляется по метрике, которую задал преподаватель.
Если стандартных проверок не хватает, преподаватель подключает собственный чекер — любой инструмент, который запускается из командной строки.
Код-ревью не отменяется автогрейдером: он забирает у преподавателя ту часть, которая проверяется формально.
Code review — ручной разбор читаемости, архитектуры и стиля. Его делает человек, и заменить его автоматикой нельзя. Но большая часть проверки решений — вопросы, у которых есть однозначный ответ: компилируется ли код, проходят ли тесты, укладывается ли решение в лимиты по времени и памяти, соблюдён ли дедлайн. Эту часть машина закрывает быстрее и одинаково для всех.
Разумное разделение выглядит так: автогрейдер отсекает нерабочие решения и выставляет формальный балл, а преподаватель тратит время на код-ревью только тех работ, которые уже прошли тесты. На потоке в двести человек это разница между неделей проверки и одним вечером содержательных комментариев.
Спорные посылки, апелляции и разбор архитектурных решений. Всё остальное — очередь, логи, повторные попытки, пересчёт баллов и ведомость — платформа ведёт сама.
Одинаковое окружение, мгновенная обратная связь и ведомость курса в одном месте.
Студент узнаёт результат сразу, а не через неделю, и успевает исправить ошибку, пока помнит, что писал.
Каждая посылка выполняется в отдельном контейнере с лимитами на процессор, память и сеть. Хост и чужие посылки недоступны.
Один и тот же образ, одни и те же лимиты, один и тот же набор тестов — оценка не зависит от ноутбука студента и настроения проверяющего.
Баллы попадают в общую ведомость курса — со штрафами за просрочку, статистикой по группе и историей всех попыток студента.
Расскажите про курс: сколько студентов, какие языки, как сейчас устроена проверка. Настроим задания и чекеры за 1–2 дня. Возможен пилот на один курс.