一句话:报告五年课程重构经验:以函数式游戏编程、测试驱动开发和自动评估平台提升入门编程教学效果。
本文报告某系在入门编程课程中重构实验课的经验。该系长期以 Haskell 作为第一语言,但需以更有吸引力的方式教授函数式风格,以应对高退学率并适应学生背景差异。作者在五年间采用游戏编程激发动机,并围绕测试驱动开发与持续双向反馈组织教学,设计了综合交互式函数式游戏编程作业和函数式自动评估平台。经验表明,该方法能在提高学生参与度的同时教授更高级的函数式编程概念;论文也总结了成功与失误,并给出可复用的作业与评估模式。
Our department has long been an advocate of the functional-first school of programming and has been teaching Haskell as a first language in introductory programming course units for 20 years. Although the functional style is largely beneficial, it needs to be taught in an enthusiastic and captivating way to fight the unusually high computer science drop-out rates and appeal to a heterogeneous population of students. This paper reports our experience of restructuring, over the last 5 years, an introductory laboratory course unit that trains hands-on functional programming concepts and good software development practices. We have been using game programming to keep students motivated, and following a methodology that hinges on test-driven development and continuous bidirectional feedback . We summarise successes and missteps, and how we have learned from our experience to arrive at a model for comprehensive and interactive functional game programming assignments and a general functionally-powered automated assessment platform , that together provide a more engaging learning experience for students. In our experience, we have been able to teach increasingly more advanced functional programming concepts while improving student engagement.
@article{paperbot303,
title = {Teaching how to program using automated assessment and functional glossy games (experience report)},
author = {José Bacelar Almeida and Alcino Cunha and Nuno Macedo and Hugo Pacheco and José Proença},
journal = {Proceedings of the ACM on Programming Languages},
volume = {2},
number = {ICFP},
year = {2018},
doi = {10.1145/3236777}
}