Test Case-Informed Knowledge Tracing for Open-ended Coding Tasks
作者: Zhangqi Duan, Nigel Fernandez, Alexander Hicks, Andrew Lan
分类: cs.CY, cs.CL, cs.LG
发布日期: 2024-09-28 (更新: 2024-12-20)
备注: Published in LAK 2025: The 15th International Learning Analytics and Knowledge Conference
💡 一句话要点
提出TIKTOC框架,利用测试用例信息改进开放式编程任务的知识追踪
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 知识追踪 开放式编程任务 测试用例 多任务学习 大型语言模型
📋 核心要点
- 开放式编程任务的代码具有多样性,传统知识追踪模型难以充分捕捉学生代码中的知识细微差别。
- TIKTOC框架利用测试用例信息,结合大型语言模型,同时分析和预测学生代码和测试用例通过情况。
- 实验表明,TIKTOC优于仅使用总分的传统知识追踪方法,并能提供更细粒度的学生知识洞察。
📝 摘要(中文)
开放式编程任务要求学生根据特定规范构建程序,这在计算机科学教育中很常见。由于其开放性,学生代码的多样性使得学生建模具有挑战性。传统的知识追踪(KT)模型仅分析响应的正确性,可能无法充分捕捉学生代码中的知识细微差别。本文介绍了一种用于开放式编码的测试用例知情知识追踪(TIKTOC)框架,以同时分析和预测开放式学生代码以及代码是否通过每个测试用例。我们使用用于开放式编码问题子集的测试用例来扩充现有的CodeWorkout数据集,并提出一种多任务学习KT方法,以使用大型语言模型作为骨干网络,同时分析和预测1)学生的代码提交是否通过每个测试用例,以及2)学生的开放式代码。定量结果表明,这些方法优于现有的仅使用代码提交收到的总分进行编码的KT方法。我们还定性地展示了测试用例信息与开放式代码相结合如何帮助我们获得对学生知识的细粒度洞察。
🔬 方法详解
问题定义:现有知识追踪模型在评估开放式编程任务时,主要依赖于代码的整体得分,忽略了代码内部的细节和测试用例的反馈信息。这导致模型无法准确捕捉学生在编程过程中遇到的具体问题和知识盲点。因此,需要一种更细粒度的知识追踪方法,能够利用测试用例的反馈来更准确地评估学生的编程能力。
核心思路:TIKTOC的核心思路是将测试用例的反馈信息融入到知识追踪模型中。通过同时预测代码是否通过每个测试用例,以及学生编写的开放式代码,模型可以学习到代码结构、测试用例和学生知识之间的关联。这种多任务学习的方式能够提高知识追踪的准确性和细粒度。
技术框架:TIKTOC框架主要包含以下几个模块:1)数据预处理模块,用于处理CodeWorkout数据集,并提取代码和测试用例信息;2)特征提取模块,使用大型语言模型(LLM)对学生代码进行编码,提取代码的语义特征;3)多任务学习模块,同时预测代码是否通过每个测试用例,以及学生的开放式代码;4)知识追踪模块,根据模型的预测结果更新学生的知识状态。
关键创新:TIKTOC的关键创新在于将测试用例信息融入到知识追踪模型中,并采用多任务学习的方式同时预测代码和测试用例的通过情况。这使得模型能够学习到代码结构、测试用例和学生知识之间的关联,从而提高知识追踪的准确性和细粒度。与现有方法相比,TIKTOC能够提供更细粒度的学生知识洞察,帮助教师更好地了解学生的学习情况。
关键设计:TIKTOC使用大型语言模型(LLM)作为骨干网络,例如Transformer模型,对学生代码进行编码。多任务学习模块采用共享编码器和多个解码器的结构,每个解码器负责预测一个测试用例的通过情况或学生的开放式代码。损失函数包括代码预测损失和测试用例预测损失,通过加权求和的方式进行优化。具体的权重参数需要根据实验结果进行调整。
🖼️ 关键图片
📊 实验亮点
实验结果表明,TIKTOC在CodeWorkout数据集上优于现有的知识追踪方法。与仅使用代码总分的模型相比,TIKTOC能够更准确地预测学生的编程能力,并提供更细粒度的学生知识洞察。定量分析表明,TIKTOC在测试用例预测和代码预测方面均取得了显著的提升。定性分析表明,TIKTOC能够识别学生在编程过程中遇到的具体问题,例如语法错误、逻辑错误等。
🎯 应用场景
TIKTOC可应用于在线编程教育平台,为学生提供个性化的学习建议和反馈。教师可以利用TIKTOC分析学生的编程过程,了解学生的知识盲点,并针对性地进行教学。此外,TIKTOC还可以用于评估编程课程的效果,并为课程改进提供数据支持。该研究有助于提升编程教育的质量和效率。
📄 摘要(原文)
Open-ended coding tasks, which ask students to construct programs according to certain specifications, are common in computer science education. Student modeling can be challenging since their open-ended nature means that student code can be diverse. Traditional knowledge tracing (KT) models that only analyze response correctness may not fully capture nuances in student knowledge from student code. In this paper, we introduce Test case-Informed Knowledge Tracing for Open-ended Coding (TIKTOC), a framework to simultaneously analyze and predict both open-ended student code and whether the code passes each test case. We augment the existing CodeWorkout dataset with the test cases used for a subset of the open-ended coding questions, and propose a multi-task learning KT method to simultaneously analyze and predict 1) whether a student's code submission passes each test case and 2) the student's open-ended code, using a large language model as the backbone. We quantitatively show that these methods outperform existing KT methods for coding that only use the overall score a code submission receives. We also qualitatively demonstrate how test case information, combined with open-ended code, helps us gain fine-grained insights into student knowledge.