2025 Spring · CS Education and Games
Icebreaker: "I am a TA for course XX; a game I recently played is..." (electronic, board, or toy). Discuss how it combines with the course:
- Data structures/computational thinking: Three Kingdoms Kill (maintain the card-pile data structure? implement a Three Kingdoms Kill AI?)
- Intro programming: Chinese chess (implement the game? chess AI?), and if too hard, give a chess program and let students add house rules; also use LeetCode points/badges/leaderboards as reference.
- Operating systems: Onmyoji (turn-based card battle; the action order/speed of five characters resembles process scheduling/parallelism; some skills change the action bar like raising a process priority).
- Present algorithms with Snake; students independently writing a full game in a semester may be hard; how to optimize / apply techniques to a raise/dress-up game; Scratch games; Lego programming.
Discussion / brainstorm
- Is game design/development itself worth being a CS elective? (May involve art; better as a multi-major general-education course; the school has a future animation/game club.)
- Do "GPA ranking" and "relative-performance grading" count as gamification? Why don't they feel "fun"? — Penalties for losing a game differ; playing a game is optional, but GPA ranking is mandatory — psychologically totally different.
- Group peer-review? One-on-one battle? LLM-arena-like competition — not grading others' assignments but comparing relative merits.
- How to bring addictive "reward mechanics" (tasks you can complete; social mechanics) into teaching: "I AC'd a problem, you try!", "80% of students passed 90% of the tests!", "Congratulations, your program beat 1% of students!", "Share your test results to Moments", "Pass all problems for a platinum trophy achievement", even "game-linked course" physical medals / classic lines / emoji. Also consideration for students who dislike such mechanics (one-click mute) and how to prevent addiction.
CS Unplugged (csunplugged)
For primary-schoolers learning binary. Brainstorm — how to design such an activity presenting a knowledge point from my course:
- Data structures: build a balanced tree with ball-stick blocks, rotating by assembling/disassembling.
- Data-basics: merge several tables as cards, discuss how to merge.
- Operating systems: memory allocation with cards representing memory, pack tightly to reduce fragmentation; a competition — generate a random memory-allocation operation sequence, see who fits more rounds.
- Programming: pointers/linked lists — each student has a blank paper on their head, playing a variable (data on paper), a pointer variable (x row, y column, pointing to a seat), a linked-list node; more advanced: each student is a binary-tree node.
Why games are engaging
- Fun: low-cost access to experiences hard to get in real life (e.g. FPS); mostly has fast feedback; lower-level classrooms lack such small-step feedback (a whole project late in the semester gives feedback too slowly).
- Not fun: repetitive, returning after a loss, boring, no achievement, time-consuming; having to do boring tasks (some places sell stats); reward disproportionate to effort — spending lots of time on an assignment that scores the same as someone who just copied.
- Transferable idea: let students cheaply learn something hard to get outside class; but students still need a set of basic concepts/terminology to know how to search and ask.