
От хаоса до контроля: создание стандартизированной среды разработки для 1000 учеников
17 июля 2025 г.Таблица ссылок
1 Введение
2 Структура и условия курса
2.1 Условия
2.2 программа
3 лекции
4 Практическая часть
4.1 Механизмы взаимодействия
4.2 Техническая настройка и автоматическая оценка
4.3 Выбранные упражнения и инструменты
5 Проверьте свое доказательство по примеру
6 экзаменов
7 Связанная работа
8 Заключение, подтверждения и ссылки
4.2 Техническая настройка и автоматическая оценка
Автоматизированная оценкаВ WS19 мы использовали улучшенную версию инфраструктуры тестирования, представленной в [4]. Тем не менее, эта система не могла бы не управлять онлайн-экзаменами, ни маркировать неправомерные задачи. Таким образом, мы перешли на недавно написанный инструмент с открытым исходным кодом, разработанный в TUM под названием Artemis [22]. Artemis является высоко масштабируемой, автоматизированной системой управления оценкой и зависит от языка программирования - она только ожидает, что бегуны тестирования дадут результаты тестов, придерживающиеся схемы Apache Ant Junit XML. Он уже предлагал поддержку нескольким императивным языкам программирования, и мы добавили поддержку Haskell. [10]
Поскольку Артемида заботится о большинстве вещей, включая автоматизированное выполнение тестов и управление оценками, а также предлагает режим экзамена и хорошую поддержку для оценки неправомерных задач, единственное, что осталось сделать,-это написать код тестирования. По большей части мы проверили результаты, рассчитанные в соответствии с подчинением студента, сравнив их с результатами, рассчитанными с помощью образца решения, написанного нами. В некоторых случаях мы также проверяли эффективность, используя тайм -ауты. Наши тесты были оснащены следующими библиотеками:
- QuickCheck [7]: Хотя QuickCheck может автоматически генерировать тестовые данные (с помощью произвольного типзалса), в большинстве тестов и тестов использовались пользовательские входные генераторы. Это было необходимо для увеличения покрытия и устранить не применяемые входы для тестов с предварительными условиями. Мы также использовали пользовательские усадки, чтобы обеспечить лучшую обратную связь для студентов в случае неудачи. В обоих случаях гибкие комбинаторы, предоставленные QuickCheck, сделали это простой задачей.
- Smallcheck [34]: исчерпывающие тестирующие средства, предоставленные Smallcheck, в основном служили дополнительным инструментом, который предоставил небольшие контрпримеры для, во многих случаях, очевидных недостатков.
- Вкусно [11]: Мы использовали Tasty, чтобы поместить QuickCheck, Smallcheck, модульные тесты и проверку доказательств «проверьте ваши доказательства» (см. Раздел 5) в одну общую структуру, которая способна генерировать результаты, интерпретируемые Artemis. Мы использовали модульные тестирующие средства Tasty, чтобы дополнить наши тесты угловыми чехлами. Интеграция проверки доказательств была приятно проста: нужно только предоставить подходящий экземпляр для Tasty's Istest Typeclass. [12] Более того, Tasty поддерживает тайм -ауты для отдельных тестовых случаев. Решение проблемы усеченных отчетов о тестах, упомянутых в [4].
Среда развития и онлайнУчебные пособия. В предыдущих итерациях не было никаких рекомендаций для студентов относительно среды развития, которую они должны использовать для практической части курса. Тем не менее, из-за пандемии Covid-19, это больше не было вариантом: нам нужен был способ для студентов поделиться своим кодом в режиме чтения и записи с другими коллегами (программирование пар) и ассистентам (для целей обратной связи) во время онлайн-учебных пособий. Более того, как объяснено в разделе 4.1, мы хотели, чтобы студенты использовали Линтер. Наконец, у нас был негативный опыт, когда учащиеся не устанавливают компилятор вообще, и вместо этого (MIS) использовал наш сервер отправки в качестве бэкэнда компилятора. Таким образом, мы представили строгую политику для технической установки, которая будет использоваться во время учебных пособий. Подробные инструкции по установке можно найти в Интернете [13]. Здесь мы кратко перечислим ключевые компоненты и наш опыт:
- IDE: Мы использовали VSCODIUM [14] из-за ее кроссплатформенной поддержки, богатой библиотеки расширений, широкого распространения и философии программного обеспечения с открытым исходным кодом. Мы не получили никаких негативных отзывов со стороны студентов, и, кроме того, немногие исключения не сообщалось о серьезных проблемах с установкой.
- Build and dependency manager: We used Stack[15] for these purposes. Since Stack provides curated sets of packages and compiler versions that are checked for compatibility, deterministic builds are guaranteed. Students hence showed little struggle to compile and execute their programs.
Линтер: Мы использовали hlint [16], который, помимо прочего, предоставляет предложения для альтернативных функций и упрощенного кода и пятен. Студенты с любопытством отреагировали на эти предложения и ярко обсуждали их во время сеансов программы пар.
Поисковая система API: из -за сильной системы типа Haskell поиск его API по типу подписи часто возвращает лучшие результаты, чем поиск имен функций. Для этой цели мы представили Google [17] нашим студентам и позволили им установить расширение, которое интегрирует поиск Google в их IDE. К сожалению, у нас нет данных, чтобы сообщить о том, обогащенный ли этот опыт программирования студентов.
Сотрудничество в реальном времени: мы использовали vsliveshare [18] для проведения наших сеансов программы пар (группы из 3–4 студентов). Мы можем положительно сообщить о его стабильности и удобстве подключения. К сожалению, плагин требует учетной записи Microsoft или GitHub, но, поскольку почти все студенты уже зарегистрировались до последнего раньше, это требование прошло бесконечно. Тем не менее, для будущих итераций мы планируем исследовать альтернативы с открытым исходным кодом.
В целом, мы можем положительно сообщить о настройке. Студенты были более осведомлены о своей среде программирования (компиляция, управление зависимостями и т. Д.), Пока в предыдущих итерациях. Незаконное присвоение сервера отправки в качестве бэкэнда компилятора также остановилось.
Авторы:
(1) Кевин Каппельманн, кафедра информатики, Технический университет Мюнхена, Германия (Кевин.kappelmann@tum.de);
(2) Джонас Радл, факультет информатики, Технический университет Мюнхена, Германия (raedle@in.tum.de);
(3) Лукас Стивенс, факультет информатики, Технический университет Мюнхена, Германия (stevensl@in.tum.de).
Эта статья есть
[10] Теперь он также поддерживает OCAML.
[11] https://hackage.haskell.org/package/tasty
[12] Код можно найти в репозитории в ресурсах/интеграции CYP/test/hs/test.hs
[13] https://www21.in.tum.de/teaching/fpv/ws20/installation.html
[14] VSCODIUM предоставляет бесплатные программные бинарны с открытым исходным кодом VSCODE https://vscodium.com/
[15] https://www.haskellstack.org/
[16] https://github.com/ndmitchell/hlint
[17] https://hoogle.haskell.org/
[18] https://visualstudio.microsoft.com/services/live-share/
Оригинал