[Paper] 基于模式的知识组件的学生代码提交个性化示例生成
发布: (2026年4月28日 GMT+8 01:56)
7 分钟阅读
原文: arXiv
Source: arXiv - 2604.24758v1
概述
一项新研究展示了如何通过挖掘学生自己代码提交中隐藏的模式,自动生成个性化的示例讲解给编程学生。通过直接从学生程序中提取“知识组件”(KCs)并将其输入生成式 AI 模型,系统能够生成针对学习者正在面对的具体误解的解释——无需庞大的手工制作示例库。
关键贡献
- 基于模式的 KC 提取: 引入一个基于 AST 的流水线,从一批学生提交中发现重复的结构概念(例如循环模式、递归模板)。
- KC 条件生成: 将提取的 KC 与大型语言模型(LLM)结合,引导生成的示例针对学习者的特定逻辑错误。
- 实证验证: 进行盲评专家评估,将普通 LLM 输出与 KC 条件输出进行比较,展示在主题聚焦和相关性方面的可衡量提升。
- 可扩展的个性化框架: 提供可复用的架构,可嵌入现有编程辅导平台,减少维护示例库的人工工作量。
方法论
- 收集学生代码 用于特定的编程练习(例如,实现二分查找)。
- 将每个提交解析为抽象语法树(AST)。 AST 将结构元素——循环、条件语句、函数调用——显式化且与语言无关。
- 对所有提交中的重复子树进行聚类。 每个聚类代表一个 知识组件(KC),例如“循环边界的 off‑by‑one 错误”或“递归缺少基准情况”。
- 在问题陈述中标注 在特定学生代码中出现最频繁的 KC。
- 使用模板提示生成模型(例如 GPT‑4),模板包括:
- 原始问题描述
- 学生的代码片段
- 相关 KC 列表
- 请求生成一个明确针对这些 KC 的示例解答。
- 专家评估: 两位有经验的计算机科学教育者在盲评的情况下,对生成的示例进行相关性、正确性和教学清晰度的评分,评审者不知道示例是来自基线还是 KC 条件化流程。
结果与发现
| 指标(1‑5 评分) | 基线 LLM | KC‑条件化 LLM |
|---|---|---|
| 主题相关性 | 3.2 | 4.1 |
| 与错误的对齐 | 2.9 | 4.0 |
| 整体教学质量 | 3.5 | 4.2 |
这意味着:
- 更高的相关性: KC‑条件化的示例直接针对具体错误(例如 “your loop stops one iteration early”,即“你的循环提前停止了一次迭代”),而基线示例往往转向通用解决方案。
- 更好的错误对齐: 审阅者指出,KC 引导的输出明确指出了问题模式,使学生更容易将解释映射到自己的代码上。
- 一致的质量: 未观察到正确性或可读性的下降,这表明添加的条件化并未影响模型的语言能力。
实际意义
- 降低作者工作量: 教师不再需要为每个常见错误编写数十个定制示例;系统可按需自动生成。
- 实时反馈: 集成到 IDE 插件或在线评测系统中,管道能够在学生提交失败后立即生成针对性的详细示例。
- 可扩展的辅导平台: 大规模开放在线课程(MOOC)、训练营和企业培训门户可以在大规模下实现个性化练习,提高学习者的保留率,而无需额外聘请助教。
- 数据驱动的课程设计: 通过分析哪些知识点(KCs)最常出现,教育者可以识别课程缺口并优先开发新的教学材料。
限制与未来工作
- 领域特定性: 当前实现侧重于相对较小、结构良好的作业(例如循环、递归)。扩展到更大的项目或多文件代码库可能需要更复杂的 KC 层次结构。
- 模型依赖性: 生成示例的质量取决于底层的大语言模型;模型中的偏见或幻觉可能会传播到辅导内容中。
- 评估范围: 专家评分仅限于少数问题和评审者。需要更大规模的用户研究(例如对真实学习者的 A/B 测试)来确认学习收益。
- 未来方向: 作者计划 (1) 融入动态执行轨迹以丰富 KC 提取,(2) 探索多模态解释(例如可视化、逐步调试器),以及 (3) 自动持续更新 KC 库,以适应新一批学生提交的代码。
作者
- Griffin Pitts
- Muntasir Hoq
- Peter Brusilovsky
- Narges Norouzi
- Arto Hellas
- Juho Leinonen
- Bita Akram
论文信息
- arXiv ID: 2604.24758v1
- 分类: cs.HC, cs.AI, cs.CY, cs.ET, cs.LG
- 出版日期: 2026年4月27日
- PDF: 下载 PDF