AI-Tutoring in Software Engineering Education
基本信息
2024ICSE-Software Engineering Education and Training
博客贡献人
柴进
作者
Eduard Frankford, Clemens Sauerwein, Patrick Bassner, Stephan Krusche, Ruth Breu
标签
编程教育,自动编程评估系统
摘要
随着人工智能(AI)在各个领域的快速发展,人工智能驱动的工具在教育方面表现出巨大的潜力,尤其是在编程方面。然而,目前的研究中缺少对大语言模型(LLMs)作为自动编程评估系统 (APAS)AI-Tutor的科学评估。 因此,为了了解学生如何与基于LLMs的AI-Tutor进行互动,并分析他们的体验,这篇文章展开了探索性的案例研究。
具体而言,本文在APAS Artemis中集成GPT-3.5-Turbo模型作为人工智能导师,并通过经验数据收集和探索性调查的结合,根据用户与人工智能导师的互动模式确定了不同的用户类型。此外,研究结果强调了该模式的及时反馈性和可扩展性。这项研究增加了关于人工智能在教育中的作用的讨论。
问题定义
传统的智能教学系统(Intelligent Tutoring System ITS)能提供个性化的学习体验,但其对有限训练数据的依赖限制了它们对特定场景的适用性,以及反馈的范围和深度,从而阻碍了在不同的教育背景下更广泛地使用。
另一方面,大量研究证明了ChatGPT在向学生提供个性化反馈上的潜在优势,同时部分研究记录了ChatGPT在改进代码应用上的有效性。然而,现有的实证研究大多集中在模型代码调试、代码生成以及提供提示的能力,缺少在APAS中使用AI-Tutor时,探究学生真实体验、交互模型和感知的科学调查。
本文围绕以下三个问题展开:
- 在AI-Tutor的帮助下,学生与自动编程评估系统的交互是怎样的?
- 基于LLMs的编程反馈,学生的体验感如何?
- 在自动编程评估系统中应用AI-Tutor的启发有哪些?
本文的工作具体有以下两点:
- 探索将基于LLMs的人工智能导师集成到APAS的有效性和意义。采集了人工智能导师的使用、学生互动、代码提交和反馈时间。
- 分析了每次提交之间的代码变化,以了解学生与人工智能导师的参与模式。
方法
AI-Tutor集成到APAS
该研究选用Artemis作为自动编程评估系统,原因如下:
- Artemis是开源项目,易获得、可复现
- 具有基本功能,能够通过测试驱动反馈进行自动练习评估
- 在线代码编辑器,更方便
- 具有庞大的用户群,较可靠
如图所示,整个工作流程可以简述为:教师准备一个练习(包括问题描述、模板文件、解决方案示例、单元测试);学生完成练习并提交;系统反馈结果(执行测试用例,返回测试结果和其他信息)
应用AI-Tutor后,当学生选择“View AI Feedback”时,会将学生的当前代码、练习描述、示例代码进行组合,调用API请求OpenAI的服务,返回的反馈信息显示在弹窗中。
文中采用了统一的prompt模板,旨在简化学生与大模型的互动,避免敏感及无效信息的交互,确保提供一致的教学反馈,减少API会话资源。构建的prompt如下图所示,首先让LLM扮演一名导师,给出非代码形式的指导意见。
-
language:反馈的语言。
-
description:任务问题的描述。本文选用了杨辉三角形这一任务进行研究,因为这一问题涉及了基础的编程结构(循环、条件、数组、动态内存管理),递归和迭代的算法思想,概念重叠(在数学和计算机领域都有这一概念),问题解法的多样性,编程过程中潜在问题的普遍性。
-
current:学生当前提交的代码。
-
solution:教师设置的参考代码。
与此同时,系统会记录当前问题、当前代码、LLM反馈信息、用户、时间戳等数据。
探索性调查
实验设置
实验对象为23名初学C语言的学生
实验内容为设置一周的时间,要求学生完成杨辉三角形的编程任务,并提交到自动编程评估系统中,期间学生可以自主选择是否使用“View AI-Feedback”接受LLM的反馈。最后,在课堂上要求学生完成调查问卷,以评估学生对AI-Tutor的易用性(Perceived Ease of Use , PEOU)和有用性(Perceived Usefulness, PU)。
问卷设置
问题 | 考察角度 | 结果 |
---|---|---|
我认为AI-Tutor很容易使用 | 易用性 | 1.29 |
使用AI-Tutor能更快速地完成任务 | 有用性 | -0.29 |
使用AI-Tutor能提高我的表现 | 有用性 | -0.43 |
使用AI-Tutor能提高我的工作效率/产出 | 有用性 | -0.43 |
使用AI-Tutor能更容易地完成任务 | 易用性&有用性 | 0.14 |
我认为AI-Tutor很有用 | 有用性 | 0.14 |
使用AI-Tutor时遇到了哪些挑战? | 开放性 | |
对于AI-Tutor的改进建议? | 开放性 |
结果
学生互动
进行数据分析时,过滤掉未在APAS上传代码和未与AI-Tutor进行交互的学生记录,最终对12名有意义的参与者进行评估。
如图是12名学生与AI-Tutor以及APAS交互的时间分布,绿色节点代表学生向AI-Tutor请求反馈的时间,红色节点代表学生在APAS上传代码的时间。从以上时间线分布的不同,可以将学生分为两类:
-
持续反馈 - Iterative Ivy
代表了在首次提交给APAS之前,密集使用AI-Tutor的学生。这些学生经常在没有完整解决方案的情况下,向AI-Tutor寻求理解和解决练习的指导。经过多个反馈周期,学生逐步完善他们的解决方案。当AI-Tutor的反馈转向次要优化时,学生们倾向于将他们的作品提交给APAS,以获得满分。
-
交替反馈 - Hybrid Harry
代表了在整个编码过程中,在AI-Tutor反馈和APAS提交之间交替的学生。这些学生倾向于在建立他们的代码基础后,将代码提交给APAS。过程中,AI-Tutor反馈出代码不完整或有错误的情况,学生会纠正这些问题,并重新提交。
学生体验
定性分析
从结果显示,消极和积极的评价相互中和,总体的平均反应基本为中性,其中“我认为AI-Tutor很容易使用”表现出轻微的同意。
开放性问答
对于学生提供的开放性意见,可总结为以下几点:
1. AI-Tutor的回答过于笼统。学生更喜欢直接指向代码中改进区域的上下文特定的反馈
2. 更多轮交互的需求(初始反馈后的后续问题),缺少历史反馈信息的查看功能
3. 对具体例子的需求。学生们认为具体的代码示例更有助于解释反馈建议
4. 学习抑制的潜在担忧。会过度依赖,从而减慢学习进度
经验教训
通过分析实验数据,本文作者得出AI-Tutor确实能提供实时且个性化的反馈,甚至能够就逻辑和语义问题给出反馈(例如,学生代码定义了错误的边界条件来终止循环,此时AI-Tutor能认识到这一点,并给出建议)。
另一方面,AI-Tutor也存在有用性、交互性上的不足。共有26.6%LLM的反馈信息无用(过于笼统,幻觉,直接给出参考代码);不能连续问答影响了学生的学习体验。
结论
在这项将基于ChatGPT的AI-Tutor集成到Artemis APAS的研究中,本文作者发现了这种应用的巨大潜力和挑战。虽然AI-Tutor提供了及时反馈和可扩展性等优势,但它的局限性是显而易见的。这些问题包括偶尔的一般性反馈、缺乏交互式对话、与API可用性相关的操作漏洞、学生的潜在过度依赖、缺乏人情味以及上下文限制等技术约束。
相关知识链接
下载
总结
这篇文章将基于LLMs的AI-Tutor集成到自动编程评估系统中,针对一个编程任务对23名C语言初学者进行为期一周的实验。通过记录AI-Tutor的反馈信息,自动评估系统记录的代码、测试结果、时间等信息,以及问卷结果,综合得出了该应用下学生的互动模式,与学生的体验。实验结果表明,将LLM应用到学生编程指导的应用具有实时与个性化的特点,表现出其应用潜力;但同时还存在着一些问题,在未来的研究中需要考虑。
不足
- 设置的提示要求反馈只含文字描述,缺乏代码示例等上下文指示性信息,限制了反馈信息的有用性
- 实验样本较少,不能定量说明AI-Tutor的有效性
启发
- 本文的实验过程设置得很简单,只针对一项任务,并且让学生自主选择是否使用AI-Tutor
- 学生体验的结果对今后该应用的落地提供了指向性建议(1.示例代码的需求;2.多次交互的需求;3.可查历史反馈信息的需求)
- 直接利用prompt调用API进行反馈的结果不太理想,表现出研究针对学生代码纠错的专用模型的可行性
- 分析的结果并不显著,大多为中性,文中给出了客观的评价,进行了思考与总结。
BibTex
@inproceedings{Frankford2024AITutoringIS,
title={AI-Tutoring in Software Engineering Education},
author={Eduard Frankford and Clemens Sauerwein and Patrick Bassner and Stephan Krusche and Ruth Breu},
year={2024},
url={https://api.semanticscholar.org/CorpusID:268876231}
}