2025 春 · 计算机教育与游戏
暖场:我担任 xx 课程的助教,我最近玩的一种游戏是 xx(可以是电子游戏、桌游、玩具)。讨论它与课程如何结合:
- 数据结构/计算思维:三国杀(维护牌堆的数据结构?实现三国杀 AI?)
- 程序设计基础:中国象棋(实现象棋游戏?象棋 AI?),若完整实现太困难,可给出一个象棋程序,让同学尝试加村规;也用 leetcode 的积分/徽章/排行榜作为参考
- 操作系统:阴阳师(回合制卡牌对抗,五个角色的行动顺序/速度类似进程调度/并行,有些技能改行动条就像进程提升优先级)
- 用贪吃蛇游戏呈现算法;一学期同学独立写游戏可能较难;给一个养成/换装类游戏如何优化、应用一些技术;scratch 写游戏;乐高编程
讨论与脑洞
- 游戏设计与开发本身,是否值得作为一门计算机专业的选修课?(可能还涉及美术,更适合多专业通识课; 学校有未来动漫/游戏社团)
- "绩点排名""相对性能给分" 是否也属于 "游戏化机制"?为什么没有让大家感到 "好玩"?—— 打输游戏的惩罚不同;平常玩游戏是一种可选行为,但绩点排名是必须的选项,心理上完全不同。
- 小组互评?一对一 battle?类似 LLM arena 的竞技机制——不是给其他小组作业打分数,而是比较两个作业的相对优劣。
- 游戏里让人上瘾的"奖励机制"(任务是你可以完成的、社交机制)如何融入教学:"我 AC 了一道题目,你也来试试吧!"、"80% 的同学通过了这道题目的九成测!"、"恭喜你,程序性能打败了 1% 的同学!"、"分享你的测试结果到朋友圈"、"通过全部题目,获得本课程的白金奖杯成就"、"游戏联动课程"的实体奖牌/经典台词/表情包。也要让不喜欢这种机制的同学保持舒适(一键屏蔽),以及如何反沉迷。
不插电的计算机科学 (csunplugged)
面向小学生入门二进制。脑洞——如何设计一个这样的活动,呈现我担任助教的课上的一个知识点:
- 数据结构:平衡树用球棍积木搭建,通过拆装积木来实现旋转
- 数据概论:几个表的合并做成卡片,讨论如何合并几张表
- 操作系统:内存分配用卡片表示内存,尝试密铺、减少碎片;做一个比赛——生成随机的内存分配操作序列,看谁能放更多的轮数
- 程设:指针/链表——每个同学头上贴一张白纸,扮演一个变量(纸上写数据)、指针变量(纸上写 x 行 y 列,对应某个同学的座位)、链表节点;更进阶可以让每个同学扮演一个二叉树节点
游戏为什么吸引人
- 开心:低成本获得某种在现实中很难获得的体验(如 FPS);主要是有反馈,且反馈比较快;低年级课堂缺少类似的小步快跑反馈(后八周一整个大作业反馈太慢)。
- 不开心:重复去做、打完失败还要回来,非常枯燥、没有成就感、很耗费时间;必须做一些无聊的任务(部分地方会卖数值);回报与投入不成正比——付出很多时间做的作业,和别人随便抄一抄的作业分数一样。
- 迁移思路:让学生低成本学到某种课外很难学到/接触到的东西;但学生仍需理解一套基本的概念术语,才能知道如何搜索和提问。