Ваш инструментарий для обучения в масштабе: уроки из курса Haskell 1000-Student

Ваш инструментарий для обучения в масштабе: уроки из курса Haskell 1000-Student

17 июля 2025 г.

1 Введение

2 Структура и условия курса

2.1 Условия

2.2 программа

3 лекции

4 Практическая часть

4.1 Механизмы взаимодействия

4.2 Техническая настройка и автоматическая оценка

4.3 Выбранные упражнения и инструменты

5 Проверьте свое доказательство по примеру

6 экзаменов

7 Связанная работа

8 Заключение, подтверждения и ссылки

4 Практическая часть

4.1 Механизмы взаимодействия

Студенты проводят большую часть своего времени на практической части курса. Именно здесь они применяют теорию, объясненную в лекции к упражнениям по учебным и домашним заданиям в виде задач программирования, упражнений на доказательства и разных других заданий (вывод типа, преобразование программ в хвостовой рекурсивную форму и т. Д.). Поскольку у каждого студента есть уникальные интересы, сильные и слабые стороны и различные уровни приверженности, мы использовали разнообразный набор механизмов для их привлечения.

Как указано во введении, поддержание взаимодействия особенно сложно на курсах, которые преподаются удаленно. Мы пережили это из первых рук при преподавании курса теоретической информатике в течение первого семестра, пострадавшего от пандемии Covid-19. В течение этого семестра мы увидели значительно большее снижение домашних заданий и участия в обучении, чем в предыдущие годы. Таким образом, мы уделяем особое внимание привлечению методов обучения для курса функционального программирования в WS20.

Мы хотим подчеркнуть, что взаимодействие не просто увеличивается, предлагая больше вещей - это может даже увеличить стресс - но предлагая вещи, которые служат пренебрежимым потребностям. Эффективные механизмы взаимодействия не просто заставляют студентов заняты, но и искренне делают курс более интересным и веселым: они привлекают студентов с содержанием, инструкторами и друг с другом [10, 23, 40]. Теперь мы опишем механизмы, которые оказались особенно ценными для нас:

Бонус оценки для обеих итераций курса, студенты смогли получить бонус на один шаг на своем выпускном экзамене, при условии, что они достигли определенных целей в течение семестра. Этот стимул уже использовался в предыдущей итерации, но впоследствии упал из -за негативного опыта с плагиатом. Однако в результате участие в домашних условиях упражнения сильно уменьшилось [4]. Более того, студенческий совет сообщил нам, что одно из самых просящих пожеланий студентов - это бонус.

Следовательно, мы снова внедрили бонус с некоторыми изменениями. Во-первых, вместо того, чтобы запрашивать 40% всех достижимых пунктов, мы перешли на систему прохождения или фальсификации на систему категории. Студенты прошли лист, если они прошли ≈ 70% всех тестов, и получили бонус, если они прошли ≈ 70% всех листов. Мы перешли на эту систему, чтобы учащиеся не могли получить бонус в начале семестра в начале семестра, а затем перестали участвовать, что привело к разбиванию. Во -вторых, в WS20 мы представили дополнительные способы получения бонусных баллов, например, участия в конкурсах программирования или семинарах со стороны отраслевых партнеров. Это диверсифицировало систему и особенно повышенное участие студентов, которые боролись с задачами по программированию, но, тем не менее, были заинтересованы в курсе.

В результате из 802 студентов, которые взаимодействовали с системой домашних заданий, 298 получили бонус оценки в WS20 (37%). Более 96% всех студентов, которые получили бонус, сдали выпускной экзамен, тогда как более половины всех студентов, которые не получили бонус, не удалось. Подобные цифры можно сообщить для WS19. Наконец, в отличие от предыдущих лет, мы не видели никаких серьезных случаев плагиата, несмотря на то, что они проводят все представления через инструмент проверки плагиата [8].

Мгновенная обратная связьНаблюдение, которое мы сделали в разделе 3, распространяется на практическую часть курса: обратная связь должна прийти быстро. Преимущество оперативной обратной связи хорошо поддерживается в литературе [23, 26]. Опять же, асинхронный форум вопросов и ответов помогает в этом отношении, по крайней мере, при решении вопросов общего характера. Однако проблемы, специфичные для представления студента (например, ошибка или ошибка в доказательстве), должны быть исправлены самим студентом как 1) это критический навык ученых -компьютеров, чтобы обнаружить ошибки, и 2) код/доказательства не могут быть разделены до крайнего срока подачи из -за бонуса.

Автоматизированные тесты могут заполнить этот пробел: они предоставляют оперативную обратную связь, не отдавая слишком много информации (например, только показывая неудачный вход и ожидаемую выходную пару). Само собой разумеется, они также имеют решающее значение для масштабирования системы домашних заданий для большого количества студентов. Мы описываем нашу инфраструктуру тестирования более подробно в разделе 4.2.

Тем не менее, мы также позволяем студентам -помощникам вручную пересмотреть все окончательные представления в первой итерации курса, чтобы обеспечить обратную связь, не охваченную автоматизацией, в частности, в отношении качества кода. К нашему ужасу, этот отзыв сделал очень мало, и большая часть этого, вероятно, была проигнорирована. Частично это связано с тем, что после каждого срока подачи заявления потребовалось 1–2 недели, чтобы обеспечить обратную связь всем студентам. В этот момент студенты уже перешли на новый набор упражнений и, вероятно, не были мотивированы, чтобы вернуться к своим старым представлениям. Некоторые также могут заботиться только о прохождении тестов и не особенно заинтересованы в отзывах о качестве кода.

Следовательно, во второй итерации мы перераспределили ресурсы: вместо того, чтобы оценивать материалы, ассистенты студентов теперь поддерживали нас, создавая увлекательные упражнения и предлагая новый контент (например, надзорные семинары партнеров по отрасли), в то время как мы сосредоточились на написании исчерпывающих тестов с хорошими отзывами и расширили наши автоматизированные проверки доказательств (см. Раздел 5). Чтобы предоставить хотя бы некоторые отзывы о качестве кода, мы поручили студентам использовать Linter (см. Раздел 4.2).

Мы можем очень положительно сообщить об этом решении: мы смогли предложить более разнообразный набор упражнений и иметь ресурсы для предложения нового контента, в то время как качество кода, похоже, не страдает. Действительно, Линтер даже, казалось, повысил осведомленность учащихся не только писать правильный код, но и использовать хорошие шаблоны кодирования. Похоже, что это связано с тем, что 1) Linter обеспечивает мгновенную обратную связь и 2) визуально выделяет пораженные фрагменты кода и обеспечивает быстрые исправления.

Конкуренция и награды. Из-за положительных отзывов мы продолжили традицию управления еженедельным конкурсом программирования Opt-In, как это было представлено в [4]. Каждую неделю одно домашнее задание было выбран в качестве проблемы соревнований, и был исправлен критерий для ранжирования заявок. Участие было необязательным: студенты могли пройти упражнение, не оптимизируя свой код и не отправляя его на соревнование. Набор проблем соревнований был разнообразным, включая проблемы с кодом гольфа, проблемы с оптимизацией, конкурсы игровых стратегий, конкурс программирования ACM-ICPC и творческие задачи, такие как музыкальный состав и компьютерное искусство (см. Раздел 4.3). 30 лучших записей получили очки и были представлены публике в блоге [9], написанные с использованием ироничного самоуверенного стиля третьего лица, установленного в предыдущих семестрах.

В целом 30 лучших студентов получили награды на юмористической церемонии награждения в конце семестра. Мы сотрудничали с партнерами по отрасли, чтобы предложить такие призы, как билеты на конференции по функциональному программированию, мастерские Haskell и книги по программированию, а также наличные и материальные призы. Этот первоначальный контакт с отраслевыми партнерами также вызвал идею предложить семинарам Haskell, управляемые инженерами -программистами из Industry в WS20 (объясняется ниже).

Соревнование в WS20 значительно выиграла от включения работы наших студентов -помощников: в начале семестра мы мозговые штурмы для идей соревнований. Затем мы сформировали команды, каждая из которых отвечала за реализацию одной идеи, которая будет опубликована в качестве соревновательного упражнения в течение семестра. Это позволило нам создать более обширные, разнообразные и практические упражнения, чем в предыдущие годы, где все задачи были созданы организаторами курса.

Как сообщается в [4], мы можем подтвердить, что конкуренция очень хорошо работает для мотивации талантливых студентов. Они выходят далеко за рамки того, что учат как часть курса при разработке своих конкурентных решений. Многие из них стали основными водителями в команде студенческих помощников в последующих итерациях. Действительно, после предложения конкуренции в WS19 количество заявок на должности студентов -помощника в WS20 более чем удвоилось. В каждой итерации курса 144 разных ученика входили в число 30 лучших недель, по крайней мере, один раз. Мы также получили свидетельства от студентов, которые, хотя они не работали хорошо (или вообще не участвовали) в соревнованиях, они, тем не менее, наслаждались сообщениями в блоге и продвинутыми материалами, обсуждаемыми на нем.

Конкуренция сочетает в себе множество эффективных механизмов взаимодействия [30, 40]: это сложная, часто практичная, юмористическая и интегрирует аспекты геймификации. Несмотря на помощь наших студентов, управление соревнованиями оставалось чрезвычайно трудоемким, в частности, оценка представлений и написания постов в блоге. Мы предвидимся о дальнейшей помощи студентам-помощникам в этих отношениях, сокращая конкуренцию в двухнедельном формате или заменяя его более эффективными механизмами, которые мотивируют талантливых студентов.

Семинары с отраслевыми партнерамиМногие студенты в TUM подвергли сомнению применимость и ценность функционального программирования для реальных приложений. Очевидно, что в США не так много использования, обещающих их иначе. Вместо этого у нас была идея пригласить людей из промышленности предложить мастер -классы по функциональным программированию по практическим темам, не охватываемым в нашем курсе.

В WS20 мы провели три семинара по 1) шаблона проектирования для функциональных программ, 2) сетевого и расширенного ввода -вывода, а также 3) пользовательские интерфейсы и функциональное реактивное программирование. Мы ограничивали участие 35 студентов для каждого семинара, и, к нашему удовольствию, спрос превысил предложение (более 120 студентов заявили). Партнеры из отрасли и участники семинара очень положительно сообщили нам. В некоторых случаях семинары были даже продлены на несколько часов из -за большого любопытства со стороны студентов. Более того, организационные накладные расходы были небольшими: нам просто пришлось сообщить программу наших партнеров и координировать время и место. Мы предполагаем, что предлагают больше семинаров в будущих итерациях и настоятельно рекомендуем этот механизм другим инструкторам.

Социальные взаимодействияИсследования подтвердили, что пандемия Pandemic Covid-19 ухудшала социальную жизнь учащихся, что привело к более высоким уровням стресса, тревоги, одиночества и симптомов депрессии [12]. Следовательно, в WS20 мы исследовали механизмы для развития социального взаимодействия и обмена между студентами, которые также играют важную педагогическую роль в целом [18]. Важно отметить, что для увеличения взаимодействия не существует единого решения, но для увеличения взаимодействия не существует единого решения, но для увеличения взаимодействия необходимы несколько форм социального взаимодействия [10, 23].

Во-первых, мы решили использовать парные программы (группы из 3–4 студентов) в наших онлайн-учебниках. Техническая установка для этого описана в разделе 4.2. Это не только сделало социальные взаимодействия неотъемлемой частью учебника, но и оказало положительное влияние на обмен знаниями. Мы можем очень положительно сообщить об этой политике: она получила 13 положительных и 2 отрицательных комментариев в форме оценки курса.

Во-вторых, мы провели две неформальные сеансы встреч, одну в начале и одну в конце семестра. Каждому сеансу присоединились ≈ 50 студентов. Мы начали с сессий ледоколов в комнатах для прорыва, случайным образом распределяя студентов и, по крайней мере, один помощник студента в каждой группе. Затем мы открыли тематические комнаты для прорыва, где студенты могли свободно говорить о данной теме. Некоторые предпочитали говорить о курсе, у других были беззаботные разговоры о университетской жизни, а другие начали играть в онлайн-игры. В целом, мы получили очень положительные отзывы для этих сессий.

В-третьих, мы организовали конкурс программирования, похожий на ACM-ICPC, где учащиеся участвовали в командах, а затем последовала беззаботная сессия для участников.

Авторы:

(1) Кевин Каппельманн, кафедра информатики, Технический университет Мюнхена, Германия (Кевин.kappelmann@tum.de);

(2) Джонас Радл, факультет информатики, Технический университет Мюнхена, Германия (raedle@in.tum.de);

(3) Лукас Стивенс, факультет информатики, Технический университет Мюнхена, Германия (stevensl@in.tum.de).


Эта статья естьДоступно на ArxivПод CC по лицензии 4.0.

[8] Мы использовали Moss https://theory.stanford.edu/~aiken/moss/

[9] https://www21.in.tum.de/teaching/fpv/ws20/wettbewerb.html (ws20) и https://www21.in.tum.de/teaching/fpv/ws19/wettbewerb.html (ws19)


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE