CodeStylist: Supporting Early Undergraduate Programmers with Course-Aware Code Style Feedback
本文介绍了 CodeStylist,这是一款旨在为本科低年级程序员提供特定课程代码风格反馈的 Web 应用程序,并报告了一项形成性专家评审的结果,该评审发现该工具在使隐性标准可视化方面具有前景,但也强调了关于输出可靠性、信任度以及将大语言模型生成的解释与确定性规则检查相结合的需求方面的担忧。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你正在学习如何写故事。你知道情节需要合理,角色行为要符合逻辑,结尾需要令人满意。但还有另一个层面:你的老师还要求你使用特定的字体,按照特定的方式缩进段落,并且避免以“而且(And)”开头句子。如果你情节写对了但格式错了,你可能会丢分。在计算机编程的世界里,这种“格式化”被称为代码风格(code style)。这无关乎计算机能否运行程序(那是情节),而在于代码是否整洁、有序且易于人类阅读。
长期以来,老师们一直为此感到困扰。他们希望学生学习这些整洁规则,但针对这些规则提供反馈非常耗时。如果老师等到学期末才说:“嘿,你的变量名用了错误的字体,”那么学生早就把教训忘到脑后了。最近,一种新型的“智能助手”——**大语言模型(LLM)**出现了。你可以把它们想象成超级聪明的机器人,它们可以阅读你的代码并与你讨论它。但问题在于:这些机器人擅长提供通用的建议,但它们往往不知道你所在特定课程的具体规则。它们可能会告诉你按照另一个国家的专业标准来写作,而你的老师只是想让你遵循当地学校的规则。
这就是普渡大学的一组研究人员试图用一个名为 CodeStylist 的新工具解决的问题。他们想看看是否能构建一个完全了解“你的”特定老师要求的机器人,以便在你编写代码的过程中就能给你提供有用的提示,而不是等你写完提交之后。他们不仅构建了这个工具,还邀请了一群教师和助教来试用,并告诉他们这究竟是真的有用,还是仅仅是一个会让学生感到困惑的华丽玩具。
实验:一个了解教学大纲的机器人
研究人员构建了 CodeStylist,这是一个 Web 应用程序,充当编程学生的个人编辑器。它不是给出像“让你的代码更整洁”这样笼统的建议,而是根据特定课程的“风格指南”进行配置(configured)。这就像拥有一个已经阅读过你老师提供的精确教学大纲和评分标准的机器人。
它是如何在现实世界中工作的:学生上传他们的代码文件(这可能是一个包含许多不同文件的整个项目,而不只是一个文件)。他们告诉工具,“这是我的 C 语言编程课”,然后工具将代码发送给大语言模型(一种人工智能)。AI 阅读代码并生成一份报告,指出具体的行号。它会说类似这样的话:“嘿,在第 42 行,你把这个变量命名为 'x',但我们班级的规则规定变量应该是描述性的,比如 'totalScore'。此外,你在这里漏掉了一个解释这部分功能的注释。”
至关重要的一点是,在本次研究测试的版本中,该工具完全依赖 AI 来做出这些判断。 它并没有一个独立的、严格的计算机程序(“确定性”检查器)来核实事实。它要求 AI 同时寻找规则和错误。
目标并不是为学生修复代码或为他们评分。目标是充当一个“修改伙伴”——一个帮助学生在按下提交按钮之前捕捉错误工具。研究人员想知道:老师会信任这个机器人吗?学生真的会使用它吗?最重要的是,机器人的建议是否符合老师的实际要求?
老师们的评价:喜忧参半
为了了解情况,研究人员收集了来自普渡大学计算机科学课程的 18 名教学人员(助教和一名讲师)的意见。这些人是每周实际阅读学生代码的人。他们使用了该工具,并用他们之前见过的真实代码示例进行了测试。随后,他们填写了调查问卷并分享了真实的看法。
结果有点像一场剧中的戏,演员们都在尽力表演,但剧本还需要修改。
好消息:
老师们一致认为这个想法非常好。他们看到 CodeStylist 可以让隐形的规则变得可见。一位老师指出,这就像拥有了“第二双眼睛”,可以瞬间发现风格错误。他们相信学生确实会使用这个工具,大多数人预测学生每周至少会检查一次代码。老师们认为,这是一种在最终评分前捕捉风格错误的好方法,从长远来看节省了大家的时间。
坏消息(以及巨大的担忧):
主要问题在于信任。老师们并不完全信任机器人的回答。
- 准确性: 当被问及机器人正确回答的频率时,老师们猜测平均为 60.7%。这意味着近 4/10 的情况下,机器人可能会出错、产生误导,或者给出的建议不符合课堂规则。因为该工具仅依赖 AI 而没有严格的“拼写检查器”作为备份,所以它有时会遗漏某些内容或凭空捏造。
- 帮助程度: 在 1 到 5 分的量表中,老师们对答案的帮助程度评分为 3.50,对实用性的评分评分为 3.33。这些分数属于“还可以”,但称不上“卓越”。
- 学习效果: 最大的担忧是该工具是否真的能帮助学生学习。“预期学生学习效果”的平均评分仅为 2.61 分(满分 5 分)。这低于中位值。老师们担心,如果机器人给出了错误的建议,学生可能会盲目跟随而不加思考,或者当机器人的建议与老师的真实规则发生冲突时感到困惑。
一位助教甚至非常怀疑,她给出了 4% 的准确率评分,并表示学生“绝不会”使用它。另一位则担心,如果机器人给出了糟糕的建议,会给老师创造更多的工作量,因为老师不得不去收拾由机器人搞砸的烂摊子。
结论:一个有前景的草稿,而非成品
研究人员得出结论,CodeStylist 是一个很有前景的开端,但它还没有准备好成为课堂上的最终权威。老师们认为它是一个用于检查风格和发现潜在问题的有用工具,但他们并不认为它目前是一个能够可靠地教导学生掌握优秀编程深层原则的工具。
论文建议,为了让这个工具真正发挥作用,它需要一种“混合”方法。与其让 AI 猜测一切,不如使用严格、不可更改的计算机规则(如拼写检查器)来发现明显的错误,然后仅使用 AI 来解释为什么这些错误很重要。老师们还要求提供更好的视觉辅助功能,例如高亮显示具体的代码行,并展示学生违反的具体规则,以便学生能够自行验证这些建议。
简而言之,这项研究表明,虽然“感知课程内容”的反馈是一个伟大的想法,但目前的 CodeStylist 版本由于缺乏严格的计算机备份,其可靠性还不足以成为老师的最佳助手。它是一个需要更多改进的辅助草稿,以确保它不会在无意中教给学生错误的编程方式。研究人员相信,如果他们能够解决准确性问题并使反馈更容易被验证,这类工具将成为帮助学生编写更整洁、更专业代码的变革性工具。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。