论文
使用大语言模型模拟学生的Java编程错误
Simulating Students' Java Programming Errors with Large Language Models
摘要
了解学生在编程中的错误是编程教育的基石,但是为任何新设计的任务获取一组具有代表性的学生错误仍然是缓慢且昂贵的,因为真实的提交只有在广泛的课堂部署后才会积累。本文探讨了 大语言模型 (LLM) 是否可以通过模拟代码提交中的实际逻辑错误来充当学生的可扩展代理。使用 CodeWorkout 数据集,包含 74,000 多个独特的学生 Java 提交,涉及 37 个问题,我们在三种主流提示策略下评估了 5 个 LLM:输入输出 (IO)、思想链 (CoT) 和迭代自我优化。我们从两个关键维度评估表现:多样性(不同错误模式的范围)和一致性(与真实学生错误的一致性),并检查这些维度如何随着编程任务的困难程度而变化。我们的定量研究结果表明,虽然所有模型都会产生不同的错误,但它们与人类提交的结果的一致性存在差异:Claude Sonnet 4 实现了最平衡的性能。此外,我们还进行了一项盲法专家注释研究 (N = 401),比较合成错误和真实错误。这种定性分析证实,生成的错误在功能上与真实的学生错误没有区别。此外,难度较高的问题会引发更多样的错误,但学生般的错误较少。这些结果强调了使用 LLM 模拟人类学习者的权衡,并提出了将合成错误集成到可教代理、智能辅导系统和大规模学习分析中的设计注意事项。