
От кампуса до облака: наше обучение функциональному программированию до тысяч во время пандемии
17 июля 2025 г.Авторы:
(1) Кевин Каппельманн, кафедра информатики, Технический университет Мюнхена, Германия (Кевин.kappelmann@tum.de);
(2) Джонас Радл, факультет информатики, Технический университет Мюнхена, Германия (raedle@in.tum.de);
(3) Лукас Стивенс, факультет информатики, Технический университет Мюнхена, Германия (stevensl@in.tum.de).
Таблица ссылок
1 Введение
2 Структура и условия курса
2.1 Условия
2.2 программа
3 лекции
4 Практическая часть
4.1 Механизмы взаимодействия
4.2 Техническая настройка и автоматическая оценка
4.3 Выбранные упражнения и инструменты
5 Проверьте свое доказательство по примеру
6 экзаменов
7 Связанная работа
8 Заключение, подтверждения и ссылки
Во всем мире отделы компьютерных наук испытали значительный рост числа учащихся. Более того, продолжающаяся пандемия Covid-19 требует, чтобы учреждения радикально заменили традиционный способ обучения на месте, перемещаемое взаимодействие от физического в виртуальное пространство. Мы сообщаем о наших стратегиях и опыте решения этих вопросов в рамках курса функционального программирования и проверки на основе Хаскелла, в котором участвуют более 2000 студентов в течение двух семестров. Помимо прочего, мы способствовали взаимодействию с еженедельными конкурсами по программированию и творческими домашними проектами, семинарами с партнерами по отрасли и совместными руководствами по программированию пар пар. Чтобы предложить такую обширную программу сотням студентов, мы автоматизировали обратную связь для программирования, а также индуктивные упражнения. Мы объясняем и делимся нашими инструментами и упражнениями, чтобы их можно было повторно использовать другие педагоги.
1 Введение
В этом документе сообщается о стратегиях и инструментах, используемых для проведения двух итераций крупномасштабного курса функционального программирования и проверки в Техническом университете Мюнхена (TUM). В то время как первая итерация (зимний семестр 2019 года, 1057 участников) состоялась в кампусе, вторая итерация (зимний семестр 2020 года, 1031 участники) была затронута пандемией Covid-19 и состоялась в виртуальном пространстве. Предыдущие итерации курса были введены в [4]; Тем не менее, мы столкнулись с двумя новыми проблемами:
Парящие зачисленияОтносительно молодая область компьютерных наук стала одной из крупнейших учебных программ по всему миру. Увеличение числа учащихся является драматичным [27, 25], в то время как занятость нового преподавателя часто отстает. В TUM число новых зачислений в компьютерные науки более чем удвоилось в период с 2013 по 2021 год с 1110 до 2644 (увеличение на 138%), в то время как академический персонал увеличился только с 439 до 573 (31%) [1].
Это радикальное увеличение требует не только больших физических ресурсов, таких как более крупные лекционные залы и больше библиотечных мест, но и академический персонал для надзора. Учитывая расхождение в росте между участием студентов и занятостью персонала, автоматизация надзора и механизмов обратной связи неизбежна. Автоматизация, однако, не должна негативно влиять на качество обучения.
Онлайн -обучениеПродолжающаяся пандемия Covid-19 принудила радикальный переход от обучения на месте к онлайн-классам. Преподаватели должны были переосмыслить то, как они представляют материалы и взаимодействуют со студентами, обучают помощников так, как они помогают студентам в учебных занятиях. Студенты, с другой стороны, страдают от отсутствия социального взаимодействия и общения, что приводит к более высоким уровням стресса, тревоги, одиночества, симптомов депрессии и снижению аффективного взаимодействия [12, 38].
По нашему опыту, разрыв между студентами и лекторами, а также отсутствие взаимодействия в кампусе между студентами также могут привести кзатирание: Практика демонстрации небольшого участия в течение семестра во время широкого изучения непосредственно перед экзаменом. Растирание имеет тенденцию привести к плохому долгосрочному удержанию и неглубокому пониманию материала. Действительно, преимущества проведения проведения учебных мероприятий, а не втирки, было продемонстрировано в сотнях экспериментов [11, 20].
Помимо этих общих задач, есть третий, специфичный для субъекта-вызов, который мы стремились решить:
Функциональное программирование является практичнымОбратная связь студентов и личный опыт показал нам, что многие студенты в TUM ставят под сомнение применимость и полезность функциональных языков за пределами академических кругов. Они разочарованы отсутствием промышленного понимания и реального мира или, по крайней мере, интерактивных приложений. Действительно, некоторые даже воспринимают функциональное программирование как препятствие; В конце концов, они уже знают, как программировать императивно.
Хорошие педагоги не просто учат, но и вдохновляют: мы должны приблизить преимущества функциональных языков к сердцам наших студентов, показывая реальную применимость и делая функциональные программы веселыми и привлекательными.
ВкладВ этой статье мы представляем наши ответы на эти проблемы и предоставляем инструменты и упражнения для других преподавателей. Нашим вкладом является 1) описание технических инструментов, которые обеспечивают крупномасштабные (функциональные) курсы программирования по физическому и виртуальному пространству, 2) инструмент инструментов взаимодействия для курсов программирования и их оценки, а также 3) упражнения и инструменты для других функциональных педагогов по программированию. Наши ресурсы можно найти в центральном хранилище этой статьи. [1]
КонтурМы начнем с описания основных условий нашего курса и его программы в разделе 2. Инструменты и методы обучения, используемые во время лекций, объясняются в разделе 3. Раздел 4 описывает механизмы, инструменты и технические настройки, которые мы использовали для создания привлекательного опыта, который является масштабируемым для практической части курса. Он также включает в себя структуру для тестирования ввода/вывода в Хаскелле, которая решает проблему прозрачности, распространенную в традиционных подходах. Раздел 5 представляет «Проверьте ваше доказательство» - инструмент, созданный нашей лабораторией для автоматической проверки простых индуктивных доказательств для программ Haskell. В разделе 6 описывается, как мы адаптировали наши экзамены к ситуации с Covid-19 и большим количеством участников. Наконец, в разделе 7 изложены связанные работы, и раздел 8 завершается кратким и аспектом для улучшения.
Эта статья есть
[1] https://github.com/kappelmann/engaging-large-cale-funtional-programming/
Оригинал