跳转至

编程作业的创新设计

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 春 "计算机教育与游戏" 主题研讨。