We present a framework for sandboxing and restricting features of the OCaml programming language to effectively automate the grading of programming exercises, scaling to hundreds of submissions. We describe how to disable language and library features that should not be used to solve a given exercise. We present an overview of an implementation of a mock IO system to allow testing of IO-related exercises in a controlled environment. Finally, we detail a number of security considerations to ensure submitted code remains sandboxed, allowing automatic grading to be trusted without manual verification. The source code of our implementation is publicly available.
翻译:我们提出了一套沙盒化并限制OCaml编程语言特性的框架,以有效自动化编程练习的评分工作,并可扩展至处理数百份提交。我们描述了如何禁用用于解决特定练习时不应使用的语言与库特性,并概述了模拟IO系统的实现方案,从而允许在受控环境中测试与IO相关的练习。最后,我们详述了若干安全考量,以确保提交的代码始终运行于沙盒中,使自动评分在不需人工验证的情况下具备可信度。本实现的开源代码已公开。