AI News HubLIVE
站内改写5 分钟阅读

当AI能写代码时,如何教授编程?

本文探讨了生成式AI对编程教育评估的挑战,并提出借鉴艺术教育中的工作室模式、公开创作、角色反转(AI作为教师和评估者)以及现场编程表演等方法,以真实衡量学生的学习成果。

来源O'Reilly AI & ML Radar作者: Eric Freeman

长期以来,编程教学一直依赖学生编写的代码来了解他们的思维过程。错误、代码结构、笨拙的解决方案——所有这些都揭示了学生的推理方式和卡住的地方。但这扇窗户从来不是完全透明的:学生总是会抄袭、临时抱佛脚,甚至提交他们不完全理解的作品。然而,代码仍然留下了线索。生成式AI改变了这一切:一个完成的程序现在更多地反映学生的提示词而非他们的想法。更令人不安的是,代码看起来越好,我们反而越难判断学生真正学到了什么。

这引出一个更大的问题:如果AI能写代码,我们还应不应该教编程?我认为答案是肯定的,至少对某些学生和情境来说。但那是另一个话题。这里我想聚焦下一步:如果我们继续在AI时代教编程,如何才能知道学生是否真的在学习?

一些学校的回应是试图抓住学生。他们使用AI检测器、监控工具、锁定浏览器、更严格的规则和更明确的荣誉准则。这导致了更多的猜疑。这些方法中有一些是合理的。教师想保护学习,学校想保持公平。但把检测作为主要评估手段是脆弱的。斯坦福大学的研究人员发现,流行的AI检测器经常误判非英语母语者的写作,一项研究中61.22%的托福作文被标记为AI生成。OpenAI甚至在2023年停用了自己的AI文本分类器,因为它不够准确。如果创造工具的公司都无法可靠检测AI,那么基于它制定荣誉准则大概不是好主意。

但检测不是真正的问题。即使我们有完美的检测器,我们问的问题仍然是错的。我们应该问的不是“如何阻止学生使用AI?”,而是“如何在AI时代教编程,利用它的好处,同时还能看到学生是否在学习?”

从工作室借来的方法

我们在德克萨斯大学奥斯汀分校的艺术与娱乐技术系(AET)遇到了这个挑战。虽然我通常在计算机科学系,但AET隶属于美术学院,那里提供了许多其他学习和评估方式:工作室、批评、排练、修改和表演。在艺术领域,最终作品从来不是全部。一幅画并不解释其背后的选择。表演不揭示排练。设计板不展示放弃的版本。作曲不会告诉你学生在何处挣扎或最终学会了什么。

艺术教育发展出聚焦可见进步的做法。学生带来草图和草稿,讨论影响、修改和失败,并在作品进行中排练、表演和相互批评。在AET,我们教授创意编程,即用编程创作艺术、设计、游戏或体验。这不意味着为诗人编程。我们的学生——游戏设计师、网页开发者和程序员——从零开始学习,使用Processing和p5.js等工具。在创意编程传统中,程序通常被称为“草图”,借用艺术世界的术语。它意味着临时、探索性和开放修改——是你制作、测试、修改和分享的东西。

因此在创意编程中,我们已经倾向于工作室模式的草图、实验、迭代和批评。现在我们正进一步推动这一点,重新思考在AI时代如何教编程。以下是我们已经在使用或正在开发的三种方法。

公开工作

我们把课堂当作工作室。最重要的部分需要在教室中看到。学生展示他们的代码,包括错误开始、修改、做出的选择和背后的理由。作业不再只是提交的东西——它们成为你在公开场合开发的项目。AI在课堂上不被禁止。相反,它被视为学习的有益助手。学生分享提示词和技术。他们可以使用AI、Google、Stack Overflow、同学或任何其他资源。但你仍然需要对自己的工作负责。如果你提交或展示它,你必须解释代码的功能、你为什么做出那些选择以及它是如何工作的。如果我需要问你的AI来理解你的代码,那就出问题了。寻求帮助没问题,但躲在帮助背后是不行的。你不能把整个房间看着你构建的工作外包给AI。

一个真正的工作室需要学生每天在房间里一起大声交谈。这也有助于解决另一个问题:很多人说现在的学生比以前更安静。虽然这主要是基于传闻而非长期研究,但这些传闻很普遍且一致。各个校园的教职员工都在谈论沉默的教室和犹豫不决的学生,尤其是自2020年以来。无论原因是什么,这种沉默可以改变,解决方法和AI挑战一样:鼓励学生参与。沟通是任何职业中最重要的技能之一,包括实时解释想法、捍卫选择和说服他人。学生仅仅通过在线提交AI引导的工作是培养不出这些技能的。当他们公开分享工作时,不仅能防止AI滥用,还能帮助他们建立最需要的技能。

角色反转:AI作为教师和评估者

我们知道通常的模式:学生提问,AI回答,学生复制。我们试图反转这一点。在我们的新方法中,AI与学生一起讨论一组主题,进行他们必须导航的对话,并最终评估他们对材料的理解程度,从而给出成绩。这个想法在ChatGPT之前就有研究基础。像Betty's Brain这样的可教代理系统表明,解释——即使是对软件代理——会迫使学生组织知识、使连接清晰并发现漏洞。我们的模型不同地使用了这一洞见。学生不是在教机器人。相反,学生与它对话,学习、讨论、辩论并展示他们理解的内容。

我们是如何做到的?通过相当简单的提示工程,我们创建了Vera Molnár(1924–2023)的化身聊天机器人,她是算法艺术的先驱。机器人扮演Molnár的角色,吸引学生讨论随机性、计算、生成艺术和创造性选择。她的实践正好位于创意编程学生需要思考的地方:在规则和变化、系统和选择、计算和视觉判断之间。系统提示设置要讨论的主题和要问的问题类型。机器人与学生一起走过这些要点,对不清楚的回答要求更多细节,并持续追问直到有理解的证据。最后,它根据评分标准检查对话,为我们提供清晰的记录,显示学生覆盖了哪些想法,在哪里挣扎,以及改进的程度。

除了通常准确的评估外,对话记录变成了一种不同的证据,显示了典型作业可能隐藏的内容。学生注意到了什么?他们误解了什么?他们能否将概念与代码联系起来?他们能否捍卫自己的选择?当被质疑时,他们能否修改自己的解释?当我们交换角色时,一些令人惊讶的东西出现了:一份完成的提交无法展示的东西——一个学生在大声思考。

让理解成为表演:让学生表演

编程从来没有表演的传统。音乐家、画家和舞者有。现场编程正在改变这一点。每学期在AET,来自不同学科的学生一起举办一场算法狂欢(algorave)——算法锐舞的简称。音频集、投影作品、游戏演示、激光、无人机、体验设计。创意编程课程将实时视觉带入现场编程传统:代码实时编写和修改,屏幕被投影,观众看着编辑器变化,而视觉对其他学生演奏的音乐做出反应。没有预渲染。没有隐藏机制。

2004年由TOPLAP撰写的现场编程宣言包含一句适合AI时代评估的对话:“晦涩是危险的。显示你的屏幕。”这不仅是表演伦理,也是评估策略。一个学生走上舞台。投影屏幕是他们的编辑器。房间里的每个人都能读懂。音乐开始。他们在屏幕上构建一行代码。这是实时生成视觉的JavaScript。FFT、链式函数、高阶操作。当你在舞台上那样操作代码时,你最好知道你在做什么。AI可以帮助你准备。好。让它来。但一旦你上了台,问题就从“你能复制粘贴代码吗?”变成了“你能控制它吗?”你可以把代码粘贴到文件中,但你无法通过粘贴度过三分钟的公共调试,同时整个投影变成米色矩形。在现场构建中,理解无处可藏。你能阅读代码、有目的地修改并在意外发生时恢复吗?这就是流利度:在系统仍在运行时知道下一步做什么。非常难抄袭恐慌。

关于评估的说明

到目前为止,我们的结果基于自己的观察。我们没有进行对照研究或比较不同群体,所以看到的可能只是早期变异而非广泛适用的模式。目前,这些努力是实验,不是最终答案。工作室和现场表演环境中的评估总是主观且以人为本。它依赖于监控学生的进展、提供反馈以及观察他们如何处理挑战。我们不打算改变这一核心方法。对于Molnár对话作业,学生使用AI系统讨论Molnár。AI随后生成对每个学生理解的总结和分析。助教审查这一分析,进行自己的评估并打分。在我们的实验中,使用评分标准的AI评估与助教自己的评价高度吻合。我们还使用AI帮助给期末编码作业打分。在这个项目中,学生通过添加启发式方法、搜索算法和学习行为来改进一个面向对象的游戏。由于我们的助教在面向对象编程方面经验有限,我们制定了一个详细的评分标准,并让AI模型用它评估每个提交。AI的分析作为支持提供给助教。它帮助他们看到每个项目的结构,发现重要的OOP设计选择,并更自信地使用评分标准。助教仍然做出自己的评分决定。我作为OOP专家回答他们无法解决的问题。据我观察,这在很大程度上帮助助教理解和评分学生的OOP设计工作。更广泛地说,这两种方法似乎能够以难以达到的规模提供实质性反馈。