某晚,我的伴侶 Boyan Li 坐在廚房餐桌旁,批改他正在教授的一門程式設計課程的學生作業。這門課程是他哈佛醫學院博士學位的一部分。這項作業要求學生在給定的數據集上實施一個計算生物學演算法。每份提交的作業都需要仔細檢查。他運行程式碼,檢查輸出,並逐行追蹤邏輯。有些提交的作業顯然是正確的;有些顯然是錯誤的。但許多作業則處於灰色地帶:它們部分正確,但在執行或推理方面參差不齊。這些是最難評估,也是最耗時的。
作為一名高等教育研究者,我帶著專業的興趣觀察了這個過程。看似純粹的技術任務——運行程式碼和檢查輸出——實際上卻是高度解釋性的。評估程式設計作業涉及判斷什麼構成理解,什麼構成錯誤,以及可以接受多少變異。這與我對學生學習和發展的研究產生了共鳴,我的研究認為教育活動本質上是關係性的:即使是像批改這樣看似機械的活動,也變成了考官與學習者之間的對話。
看到技術技能與人類判斷力的這種相互作用,促使我思考:生成式人工智能(genAI)能否在不抹殺使其有意義的解釋性工作的情況下,協助評估?
程式設計作業似乎特別適合 AI 工具。與論文不同,電腦程式碼遵循清晰的結構和嚴格的規則,使其更容易評估。我的伴侶使用 OpenAI 的 ChatGPT 5.4 測試了這個想法。他提供了作業提示和參考解答,並要求它評估學生的程式碼的準確性。在實踐中,ChatGPT 主要將學生的程式碼與參考解答進行比較,並難以識別有效的替代方法。它經常關注細微問題——例如計算效率較低——而不是評估學生是否理解了底層演算法,而這才是主要的學習目標。
觀察到我伴侶的沮喪,我意識到 ChatGPT 缺少重要的背景資訊。我建議他提供關於學生常見錯誤的資訊,並澄清哪些細微問題可以忽略。
他現有的工作流程在這裡尤其有用:在批改之前,他會編寫自己的程式碼,然後查看教師的參考解答。這有助於他預測學生可能會遇到困難的部分,這些部分通常也是他最初犯錯的地方。與學生開會時也出現了模式。學生經常帶著類似的問題來找他,有些學生帶來了他們不完全理解的 AI 生成的答案。這些重複出現的困惑點揭示了正確實施整個演算法過程中的關鍵瓶頸——這些見解僅從參考解答中很難識別。
整合這些見解提高了 AI 工具的實用性。它可以建議進一步的測試案例,探測學生的解決方案是否通過了標記標準的檢查點,但在「邊緣情況」下失敗了——例如,演算法可能被給予極端(但有效)的輸入值。對於一項作業,學生實施了一個對齊基因組序列的演算法。一名學生提交了冗長、難以閱讀的程式碼,通過了所有三個標準檢查點。然而,ChatGPT 識別出程式碼邏輯中的一個缺陷,並在經過長時間推理後,提出了一個邊緣情況,在該情況下程式碼會產生錯誤的結果。沒有 AI,這個錯誤可能會被忽略,或者需要數小時的手動檢查。
同時,ChatGPT 也有明顯的局限性。它有時會將任何偏離參考解答的行為都視為錯誤,即使學生的方法是有效的。它生成的自信解釋在仔細檢查後並不成立。而且,除非明確指示,否則它不會可靠地檢查程式碼是否實際運行。完全自動化的評估——提供學生程式碼並獲得最終分數——仍然不切實際。
這些早期實驗表明,有效使用 AI 並不是要創建一個完全自動化的標記系統,而是關於如何將其整合到現有流程中。ChatGPT 最適合作為教學助理,而不是最終的評分者。以下是如何充分利用它。
提供背景資訊。在構建標記提示時,我發現分階段進行很有效:首先,介紹問題集並要求模型自行解決;然後,提供一個或多個參考解答;最後,強調關鍵步驟、常見錯誤和不應受到懲罰的細微問題。
生成測試案例。AI 在識別現有檢查可能遺漏的邊緣情況方面特別有效。這些邊緣情況可以納入標記標準,以指導更徹底的評估。