返回 文章 apply CMS 文章

AI 能完成我所有作业后,我如何重构课程评估

当 AI 能完成所有作业,一位 CMU 教授用口头检查、视频演示和课堂考试重新设计课程评估。

AI教育课程评估教学实践LLM自动批改
成长分 / 100 76 综合收获、行动、留存与影响

AI 能完成我所有作业后,我如何重构课程评估
为什么值得读了解一位资深教授在 AI 智能体时代对课程评估的真实调整与权衡。

看到 AI 如何破坏基于证据的教学实践,以及教育者如何应对。

关键洞察
  1. AI 正在破坏频繁低风险评估等基于证据的教学实践,推动评估转向考试和课堂活动。
  2. 书面反思和阅读测验已可被完全外包,作者改为 15 分钟助教面对面口头检查。
  3. 编码作业被扩大到生产级代码库(如 Zulip),使 AI 智能体需要交互才能完成。
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:22698

大约在2021年,远早于ChatGPT发布之前,Vincent Hellendoorn建议我在我课程的阅读测验中尝试使用GPT-3。它在没有真正阅读指定论文的情况下,生成了令人信服的答案,通过了我们的评分标准。当时,我没有做任何改变。五年后,AI智能体可以完成我所有的作业,我已经重新设计了那门课程的大部分评估方式,尽管我希望学生学习的内容几乎没有改变。策略总是一样的:不再用任何在家完成的任务来测试理解,而是专注于与助教的互动、考试和视频演示。其中一些改变违反了基于证据的最佳教学实践,但我还是这么做了。

在过去几年里,我主要教授生产中的机器学习这门课,这是一门关于围绕ML模型构建生产就绪软件的高级课程,重点在MLOps,通常有100到170名学生。如今,与其他教育工作者交谈时,一个常见的问题是我们如何在生成式AI和编码智能体的时代改变了教学,所以让我概述一下我们所做的。

我们随着AI创新和工具的变化调整了涵盖的主题,但我几乎没有改动总体的学习目标。我很幸运这不是一门入门课程,而且学习目标不是关于编写代码或使用特定工具;它们关乎工程权衡、预见和缓解风险以及团队合作。我认为这些技能仍然值得掌握,即使其中一些可以被模拟并外包给模型。(修订一门入门课程或传统的软件工程课程可能会更大幅度地改变学习目标。)

可能同样重要的是:我们允许学生在所有场合以任何形式使用AI,无需注明出处,但笔试和口试除外。我们甚至在许多地方鼓励使用AI工具。我认为即使我们想监管AI也是不可行的,更重要的是,我确实认为学生无论如何都需要学习负责任地使用这些技术。

AI正迫使我放弃基于证据的最佳实践

让我们先 upfront 谈这一点,因为它比我们实际做的事情更重要:不幸的是,AI正在积极破坏若干基于证据的教学实践(例如,参见How Learning Works和

)。例如,证据支持频繁的低风险评估并给予反馈(如作业、测验),而不是少数高风险评估(如考试)——但AI正在破坏低风险环境中的实践,并推动我们更多地转向考试。

The ABCs of How We Learn同样,我一直提供一个安全网,学生可以犯错并重新提交有限数量的作业以挽回失去的分数(这是规格评分的核心建议,以及

*关注学习成果,而非过程),但我们觉得这个过程被AI滥用了:先不假思索地提交生成的作业解决方案,然后只看评分中提出的问题再重新提交(这是将AI使用成本外部化的典型故事)。作为回应,我们此后对重新提交征收10%的惩罚。

为公平评分此外,课堂互动允许在早期低风险环境中接触材料,但有了AI,我看到许多学生小组将讨论问题外包给模型。纸笔提交可以解决这个问题,但除了更高的评分工作量外,还会增加学生的压力,破坏低风险环境,并延迟反馈。

总的来说,这是一种平衡行为,我倾向于保持低风险的重复互动,即使它可能被滥用。是的,有些学生会在没有深入学习的情况下通过课程,但这为那些想学习的学生提供了更好的环境。我不想回到我在德国学习时经历的模式,即大部分是可选的作业和学期末的一次考试,占课程成绩的100%。这对自我激励且擅长应试的学生(比如我)来说很好,但失败率和辍学率高达50%到80%。

书面反思 → 15分钟对话

现在谈谈课程的实际变化:我已经放弃了所有要求书面文本答案的作业部分。我仍然要求报告描述解决方案并链接到相关代码片段,但这只是为了导航他们的解决方案,我可以接受收到AI生成的文档。相比之下,反思文档,如“哪些部分具有挑战性?”、“你如何改进团队合作?”或在阅读测验中“对于场景X,找出一个你可能预期的、与论文中讨论的四个数据级联之一相关的合理数据质量问题……”已经变得毫无意义,可以完全委托出去。除非隐藏评估标准,否则我看不出有什么方法可以说明我期望的好答案,而不被完全外包给LLM。

对于书面反思,我以前几乎每个作业都有,现在改为与助教的面对面互动。每次作业后,每个学生需要安排一次15分钟的会议,与助教进行实时对话回答几个问题(显然斯坦福cs221本学期正在对照实验评估类似方法)。我仍然在作业中分享反思提示作为我们提问类型的示例。学生仍然可以用LLM生成初始答案,但他们可能需要记住部分内容,我们试图用后续问题挑战他们。签到会议是作业的一部分,目前占作业分数的20%,按通过/不通过评分。如果失败,学生可以再试,我鼓励我的助教保持相当高的标准——我们通常会让不少学生第一次尝试失败。

这种设计有缺点,但总体而言我对这些权衡感到满意:无惩罚的重试减少了关于助教对口头互动评分的公平性担忧;更严格的助教会占用学生的时间,但不会扣分。口头检查对焦虑的学生要求更高,但笔试也是如此,而正式的残疾便利措施在两种情况下都能提供途径。事实上,关于技术工作的专业沟通是一个学习目标,口头检查比书面反思更能训练这一点。关于规模:我们以20:1的学生与助教比例运行课程,每位助教每周大约工作10小时(我知道,这很幸运),因此每两周每位助教大约有300分钟的检查时间,这是可行的。

对于阅读测验,我干脆放弃了。我认为在课堂上进行面对面的纸笔测验不值得带来压力和不必要的记忆工作。实际上,我长期保留在线阅读测验,只是为了表明我希望学生看论文,完全明白大多数人只会问LLM。如今,我仍然布置阅读,但只布置一半,而且不计分。相反,我尝试将阅读中的教训融入课堂讨论。尽管如此,大多数学生不读阅读材料,只是在课堂上讲到那个点时问LLM(所以这方面没有变化),但那些读了的人可能会从中收获更多。

小注:我们观察到一些学生在Zoom实时讨论中使用AI(例如Cluely),未来我们可能只提供面对面的检查作为回应。

对于编码任务:代码+视频+面对面知识检查

我们有每周实验,这些是低风险的小任务,用于探索新工具(例如Kafka、Grafana、Docker、Weights and Biases)。这些任务必然范围很小,需要为初学者提供一些帮助——因此它们显然容易被编码代理自动化。我们再次依赖面对面检查——向助教展示你完成了任务的证据,并能够回答几个问题,评分通过/不通过。同样,我们经常让学生回去阅读更多文档(或让他们的聊天机器人总结相关部分),并让他们在实验课时间结束前无惩罚地重试。

对于作业,我们使用与反思讨论相同的助教检查,让他们解释部分技术解决方案。在团队合作中,我们在每个里程碑后都有较长的汇报会议(每队30-60分钟)。如果助教可以要求任何团队成员解释实现的任何部分,我们会给团队颁发“超越舒适区”奖励分。(是的,我知道,奖励分是骗人的。我还是用了。告我吧。)

此外,让学生制作一个简短视频演示他们实现的功能,在扩展Web应用程序的作业中效果很好,因为它要求该功能在真实工作流中与用户界面实际配合工作。我认为为其他部分制作视频也可能有效,只要不仅仅是阅读AI生成的脚本,而是真正基于一些技术工作。

现在更多的成绩取决于课堂上发生的事情

正如我在许多其他课程中所见,我们也把更多分数从在家完成的活动(例如作业)转移到课堂上进行的活动(例如考试、参与)。考试现在占 25%,而不是 15%,我预计未来还会进一步提高。汇报占作业和小组作业成绩的 10% 到 20%。尽管如此,大部分分数仍然与在家完成的作业和小组作业相关,大多数学生获得满分或接近满分,但现在主要的成绩区分来自考试成绩。

我还没有引入许多其他教师现在使用的计分课堂纸笔测验,但这是一个选项。目前我更喜欢由助教进行汇报。

通过 AI 批改无人监督的作业来释放助教时间

由于学生可以更容易地生成大量代码和冗长的文本文档,传统的人工批改变得更加繁琐(典型的不对称性:生产成本降低,但人工审核成本并未降低)。对我来说,转折点是一年前,当时一位助教分享说,他在批改一份提交信息中包含“Authored by Claude Code”的解答时感到自己很傻。

此后,我们构建了基础设施,用 LLM(机构批准的 LLM)自动批改代码和书面作业报告。自动批改遵循相对直接的“LLM 作为评判者”方法,即向 LLM 提供特定的评分标准项、说明以及解答的部分内容(例如代码差异、报告)。为了让自动批改更容易,我现在要求解答仓库中的解答以多个 markdown 文件的形式提交,而不是单个 PDF。自动批改器会给出“通过”或“需要复核”的判断,并为助教附上评论。我们通常抽查几个“通过”的评分(几乎从未发现问题),但助教大部分时间只花在“需要复核”的答案上(其中许多实际上是通过的)。LLM 生成的注释也加快了人工复核过程,因为它可以提供有意义的上下文。最终,助教批改时间减少了 50% 到 80%(批改的内容减少了 80%),并有更多时间与学生面对面互动——这也是他们更喜欢的。同时,我们仍然从不在没有人工复核该答案的情况下扣分。请注意,我们根据基于规格评分概念的明确通过/不通过标准进行评分,这非常适合这种评估,但也为学生们的 AI 代理提供了非常明确的指示,告诉它们如何替学生完成作业。

我们现在使用相同的“LLM 作为评判者”方法来为课堂讨论提供反馈。我们在每节课上都有分组讨论(思考-配对-分享式),并要求学生在讨论之前将答案发布到共享的 Slack 频道。在 100 到 170 名学生的班级规模下,我很少有时间给出个别反馈,但现在我也将这一过程自动化了。一个自定义的 Slack 机器人会接收他们的答案,通过“LLM 作为评判者”对照若干标准进行检查。我们通常在课程内容中涵盖了检查所依据的标准,不过我们不会与学生分享具体的检查项。然后,通过第二个提示词,我们将检查结果转化为希望具有建设性的反馈,作为 Slack 回复发布,鼓励学生修改答案,之后我们以同样的方式提供另一轮反馈。提示词以及一个示例可以在这个 gist 中找到。这个反馈生成器之后也可通过网页或 Slack 界面供学生使用,以便他们在备考时尝试不同的答案。我还在考虑在分组讨论期间就提供反馈,以推动他们在发布答案之前更深入地思考。

通常,自动评分和自动讨论反馈都需要一些校准,往往要调整提示词,使模型不那么敏感,或寻找特定问题。通常,AI 智能体有助于首先从幻灯片中为检查创建上下文和提示词,并根据几个解决方案提出常见问题和相应的检查。

更大的作业,因为智能体让旧的、限定范围的作业变得微不足道

鉴于学生在手动阅读代码、学习库和编写代码上花费的时间更少,我们可以扩大作业的范围。通常,我们试图将其扩大到当前 AI 智能体在没有更多动手指导和反馈的情况下无法解决任务的程度。

例如,我们的第一个家庭作业原本旨在筛选现有的编程技能,内容是扩展一个 Instagram 克隆,增加两个 AI 驱动的功能。提供的起始代码 albumy 是一个相对较小(12k 行代码)、干净的教科书式示例实现。虽然正确的解决方案可以用大约 20 行代码实现,但过去的挑战在于理解代码、找到合适的库、解决依赖不兼容问题,并将一切整合起来。这个作业有意限定范围,以便即使之前对 HTML 和 Flask 了解甚少,也能扩展一个 Web 应用。但这变得微不足道了:2025 年秋季,Claude Code 只需将作业文本指向它,无需任何交互就能解决整个作业,包括书面报告和反思。

我们将该作业替换为一个类似任务,要求实现两个AI驱动的功能,但这次是在Zulip中——一个生产级团队聊天应用,拥有庞大的代码库(超过50万行代码)。当前的编码代理可以处理这个代码库,但需要交互才能正确解决任务。所需功能也更大,需要更多后端和前端更改,通常涉及数百行代码。没有编码代理,这项任务在分配的时间内可能只有经验丰富的Web开发人员才能完成。修订后的作业具有类似的功能,即展示编码(或代码生成)能力,并将学生的注意力从传统ML课程中的模型基准测试转移到我的课程中的构建产品功能上,但规模和现实性要大得多。

同样,我们提高了其他作业的要求。以前我们要求学生手动进行危害分析,现在我们要求他们为此过程构建自动化,在一定的规模上运行,然后整理相关结果。我们还为小组项目增加了额外要求。

请注意,我们必须假设学生正在使用AI编码代理来完成他们的工作,并且他们对此有一定能力。如何有效使用AI编码代理不是学习目标,也不是本课程涵盖的内容(这是有意决定的),尽管我们在办公时间按需帮助学生。这反映了我之前在AI时代对待编程技能的方式:我从未在本课程中教授Python或HTML,但我假设学生具备基本的编程技能,能够自行学习新语言、库和工具;第一次作业正是为了筛选这一点。在这一点上,熟练使用AI编码工具只是新的基线,其他课程如17-214可以正确地教授它(而且几乎每个人都已经接触过这些工具或已经在积极使用它们)。我意识到学生可能需要订阅AI提供商,这可能会造成公平性问题。我不认为建议使用低成本的开源权重模型是一个公平的替代方案。相反,我通常认为订阅费用实际上低于教科书费用:如今一本教科书很容易花费100美元(而且出版商正忙于摧毁二手市场),而一个学期3个月每月20美元。有一段时间,AI公司对学生学分很慷慨,但那个时代基本上已经结束了。教科书的类比并不完美,但与首先上CMU的费用相比,AI成本几乎可以忽略不计。最后,我认为大学或其他机构有责任提供支持基础设施(例如通过奖学金)来为学生提供公平的访问,就像他们对教科书所做的那样。我们现在在课程大纲中提到了使用商业订阅的期望。

让学生被自信但错误的AI烧伤,有望校准信任

在理想情况下,我希望总能设计出一些作业环节,让 AI 智能体自信地给出错误答案,目的就是教育学生不要过度依赖这些工具。发现全班 80% 的学生因为没检查生成的答案而在一道简单题上丢分,是一次很好的学习经历——类似于网络钓鱼攻击培训(即发送虚假钓鱼邮件,看员工是否会中招)。关键在于提高对自动化偏见的意识,并将信任下调到更合适的水平。

在实践中,我并未成功专门针对 AI 可能犯的错误来设计作业,但我们现在已经偶然发现了多个此类案例:

ChatGPT 在硬件在 Jackson 对

世界与机器的区分中处于何种位置这个问题上自信地给出了错误答案(即使提供了完整论文)。在 ChatGPT 出现之前,大约 20% 的学生会犯这个错误,之后变成了 80%,甚至事先明确告诉学生 ChatGPT 会犯这个错误,也只将比例降到 50%。Claude Code 在

智能体安全问题(如何确保智能体在执行涉及金融交易的 MCP 操作前始终进行确认)上,异常坚持给出非常糟糕的解决方案,产生了一个听起来很花哨的解决方案(“两阶段确认协议”),但从对抗性角度思考时,它完全不安全。同样,最初有 80% 的学生中了这个错误的招——包括我的大多数助教,我不得不要求他们重新批改整个作业。较新的模型犯这个错误的频率降低了,所以不幸的是,学生不再稳定地中招了。

在这种失败之后进行复盘,是一个很好的学习机会,可以讨论自动化偏见和不同形式的人类监督(以及这在实践中为何真的很难)。课程设有安全网,提供重新提交的机会,如果大多数学生最初在某项作业上不及格,只要他们从中学习,就不会影响他们的成绩。

一般来说,将作业的范围和复杂度推到超出智能体单步能轻松完成的程度,有助于偶尔体验到这种情况。我希望我能专门为此进行设计。

学生似乎接受这些变化,尽管我缺乏关于学习成果的证据

除了我们评分的内容(主要是 AI 生成的)之外,我无法真正衡量学生学得更多还是更少。成绩分布不是有意义的信号;平均成绩多年来略有下降,但这在大多数这些变化之前就开始了,可能解释为将工作外包给 AI,或者仅仅是课程人口结构的变化。我能观察到的是,学生欣然接受新的形式,许多与我交谈的学生都对这些变化表示赞赏,包括灵活性、面对面互动,甚至助教的质疑迫使他们真正理解自己的解决方案。诚然,与我深入讨论此事的大多数学生都是未来的助教,不算是具有代表性的样本。学生会议从另一个方面也很有启发性:学生经常抱怨同学将思考外包给 AI,在团队内部,我们经常看到关于 AI 使用的冲突和自我监督行为,团队自行解决了许多这类问题。

持续采用似乎不可避免

我做出改变的节奏正在加快。这门课程在好几个学期里都相当稳定,只是偶尔新增一个示例或更新一下工具;如今,在大多数考核项目上(考试除外),我每个学期都会做出更大的改动。我们采取的许多措施会随着模型的进步而失效:Cluely 曾被用来在 Zoom 签到中作弊,那些过去能稳定难住编程智能体的问题,在更新的模型上已经不再奏效,而 Zulip 作业最终可能也会变得太简单。现在每个学期,我们都需要检查哪些作业和教学策略能在最新一代工具面前依然站得住脚。也许到了某个时候,我不得不向纸笔测验妥协。从积极的一面看,AI 也帮助我调整和修改作业、构建自动评分器,因此适应变化的成本也变低了。

回到 2021 年,我还能看着 GPT-3 回答我的阅读测验,心里明白事情会变,却可以心安理得地什么都不做。而到了 2026 年,我已经不能再这样了。