编程作业的创新设计
Innovative design of Programming Assignments
讨论问题:
-
考虑到大语言模型的广泛出现,程序设计基础的编程作业应该如何创新?
- 曾经的程序设计基础作业形式是什么?
- 大语言模型给曾经的作业形式带来了什么问题?
- 程序设计基础归根结底要教给学生什么?
-
你最喜欢的课程作业(不一定是计算机专业的)是什么?(这个讨论活动效果不是特别好)
- 这项作业有什么特点?
- 能否借鉴到编程作业的创新设计当中?
-
你最喜欢的电子游戏是什么?(这个讨论活动效果不是特别好)
- 对你来说,它的“爽点”在哪里?
- 这种特性能否融入到编程作业的创新设计中?
Papers:
Prompt Problems: A New Programming Exercise for the Generative AI Era(SIGCSE2024)
案例:"造路由器" 编程作业的迭代
(2024 秋分享) 一个典型的多年迭代案例: 从 "差评如潮" 到 "多半好评"。2018-2023 年间持续迭代, 从硬件路由器方案, 到新版 Router-Lab、人工验收 (每人一个树莓派与助教相连, 按协议实现/连通性/稳定性/延迟/吞吐/路由表规模压测等打分)、树莓派集群与三人组网、升级硬件、IPv4→IPv6、RIP→RIPng、加入 TFTP/DHCPv6/OSPF, 并开始探索 P4。
AI 时代的问题
- 怎样设计出 "学生学会知识才能做、AI 不会做" 的作业? 很难, 因为 AI 是可训练的; 一种思路是让作业更接近现实世界。
- 能否给中学生开设? 知识量大, 更应侧重实用科普。
- AI 生成代码相关政策: 不要让大模型生成代码; 目前查重主要是针对 "无脑 copy" 的类型。
- 同学不可避免地使用往年代码: 除了每年更新, 还可以考虑题库六选三、严禁公布往年代码、或用 attack-lab 那样给每人生成不同作业。
游戏化的设计思路
- 让作业像电子游戏一样吸引学生, 例如推出荣誉性质的段位系统 ("恭喜你成为清华数据结构王者")。
- 参考 2024 秋、2025 春 "计算机教育与游戏" 主题研讨。