[Chatgpt]
用 AI 和不用 AI 学习编码,区别在于……
如今,像 ChatGPT 这样的工具能解决许多编程入门任务。通常情况下,你只需简单地复制粘贴指令,就能得到详细的解决方案和解释,无需再做其他事情。
然而,这引起了很多关于用 AI 生成代码的 LLM 是否会影响编程教育效果的讨论。教育工作者担心学生会过度依赖 AI 工具,无法有效地学习;反之,这些工具也可能降低编程门槛,甚至扩大人们对计算机的参与!
为了了解其中到底发生了什么,我们有两个基本问题:
(1)在编程入门课程中,AI 代码生成器对新手有什么影响?
(2)新手如何在入门编程课程中用 AI 代码生成器?
一、研究方法 为了回答这些问题,我们在 2022 年 8 月对 69 名没有 Python 编程经验的学生(10-17 岁)进行了 10 节课的对照研究。在第一节课上,我们用 Scratch 向学生传授了编程的基本概念,如变量、条件和循环。然后,立即用 25 个 Scratch 代码跟踪问题对这些学生的高级计算思维能力进行评估。
在接下来的 7 节课中,学生被分成两组:Baseline 组和 Codex 组。在这 7 节课中,两组学生都使用为本次研究开发的工具 Coding Steps 完成了 45 个由两部分组成的任务。Coding Steps 包含了对新手友好的文档,并允许远程助教对学生提交的任务提供实时反馈。每个任务的第一部分是代码编写任务,学生必须根据提供的说明编写代码;第二部分是代码修改任务,学生必须根据额外要求修改前一部分的正确解决方案。在代码编写任务中,Codex 组的学生只能选择使用 LLM 代码生成器。
该代码生成器基于 OpenAI Codex,学生只需输入用自然语言描述的程序,它即可将其转换为 Python 代码。
最后两节课的重点是评估学生的表现,在这两节课中,学生无法使用 Codex 或其他 AI 辅助工具。共有两个评估环节,都包含 10 个编码任务和 40 道选择题。第一次评估测试是在七节培训课后一天进行的,第二次测试是在一周后进行的,使用的是稍作修改的类似任务。
二、有 AI 和没有 AI 的学习表现 首先,我们来看看前 7 次课的培训结果:
- 在前 7 次培训中,Codex 组的学生取得了更大的进步,完成任务的比例(91%)明显高于 Baseline 组(79%)。
- 在代码编写任务中,Codex 组学生的正确率(80%)明显高于 Baseline 组(44%),并且总体上完成任务的速度明显更快。
- 不过,在代码修改任务中,两组学生的正确率表现相似,Codex 组(66%)略高于 Baseline 组(58%)。
- 某种程度上来说,前两个结果属于意料之中,但他们在代码修改任务上平分秋色的表现真令人欣慰!Codex 组的学生在很大程度上依赖 AI 来完成代码修改任务,但表现得几乎一样好,甚至在某些情况下还优于 Baseline 组。
接着,让我们来看看最后两节课的测试评估结果:
- 在培训课程结束一天后进行的即时测试中,两组在编码任务(Codex:61%,Baseline:63%)和多项选择题(Codex:49%,Baseline:42%)上的表现差异不大。
- 在一周后进行的测试中,Codex 组在编码任务(Codex:59%,Baseline:50%)和多项选择题(Codex:44%,Baseline:35%)上的表现显然更好。
- 针对在 Scratch 预测试中成绩较高的前 50%学生,使用 Codex 的学生的成绩(74%)明显优于 Baseline 组(60%)。
- 此外,Codex 组的学生更渴望继续学习编程,在培训期间感到的压力和气馁也少得多。
三、使用 AI 学习:过度依赖与自我调节 此外,我们还对 Codex 组学生在七次培训中用 AI 代码生成器的 1666 次使用情况进行了专题分析。我们重点分析了他们如何使用工具、用了哪些提示,以及如何验证和使用 AI 生成的代码。基于此,我们发现了各种过度依赖和自我调节的迹象,下面将对此进行讨论:
- 学生经常(n=501,30%)直接复制任务描述来生成整个代码,事先并未尝试过手动编码。(✕)
- 有时(n=197,12%),学生会将任务分为多个子目标,要求 AI 只生成第一个子目标而不是整个任务。(✓)
- 当把任务分解为多个子目标时,学生有时(n=85,5%)会要求使用编辑器中已有的代码。(✕)
- 虽然比较少见(n=16,1%),但有时学生会在有了解决方案后再生成代码,以检查和比较 AI 的输出与自己的解决方案。(✓)
- 学生偶尔(n=89,5%)会写出类似伪代码的提示(例如“对于数字中的 num,如果 num > large,则将 large 设为 num”)。(✓)
- 虽然大多数情况下,学生在提交前都会对 AI 生成的代码进行适当测试,但也有几个学生(n=63,4%)在提交 AI 代码时没有进行测试。(✕)
- 虽然很少,但有时(n=30,2%)学生会主动优化 AI 生成的代码,以正确理解语法和逻辑。(✓)
- 同样,有时学生会在 AI 生成的代码中手动添加代码(如“print”语句),帮助他们验证代码的正确性。(✓)
最后,我们认为未来的 AI 工具设计者和教育者,应该促进人们对 LLM 代码生成器的合理调节使用,同时阻止上述不规范的使用方法。
|
|
|
|
|