We present the design of a framework to automatically generate a large range of different exercise tasks on Haskell-I/O programming. Automatic task generation is useful in many different ways. Manual task creating is a time consuming process, so automating it saves valuable time for the educator. Together with an automated assessment system automatic task generation allows students to practice with as many exercise tasks as needed. Additionally, each student can be given a slightly different version of a task, reducing issues regarding plagiarism that arise naturally in an e-learning environment. Our task generation is centered around a specification language for I/O behavior that we developed in an earlier work. The task generation framework, an EDSL in Haskell, provides powerful primitives for the creation of various artifacts, including program code, from specifications. We will not go into detail on the technical realization of these primitives. This article instead showcases how such artifacts and the framework as a whole can be used to build exercise tasks templates that can then be (randomly) instantiated.
翻译:我们提出了一个框架的设计方案,用于自动生成关于Haskell输入输出(I/O)编程的大量不同类型练习任务。任务自动生成在多个方面具有实用价值:手动创建任务耗时费力,因此自动化过程可为教育者节省宝贵时间;结合自动评估系统,任务自动生成使学生能够按需进行足量练习;此外,每位学生可被分配略有差异的任务版本,从而有效减少在线学习环境中自然出现的剽窃问题。本任务生成方案的核心是我们前期工作中研发的I/O行为规范语言。该任务生成框架作为Haskell中的嵌入式领域特定语言(EDSL),提供了强大的原语(primitives),用于根据规范生成包括程序代码在内的多种构件。本文不深入探讨这些原语的技术实现细节,而是重点展示如何利用这些构件及整个框架构建可(随机)实例化的练习任务模板。