2024 Autumn · Innovative Design of Programming Assignments
The "build a router" assignment is the main thread, telling its evolution story: from "widely criticized" to "mostly praised." From 2018 to 2023 it iterated continuously: from a hardware-router approach, to a new Router-Lab, to manual acceptance (each person connects a Raspberry Pi to the TA's Pi, graded on protocol implementation/connectivity/stability/latency/throughput/routing-table stress scaling), to the second/third phases of Pi clusters and three-person networking, hardware upgrades, IPv4→IPv6, RIP→RIPng, and adding TFTP/DHCPv6/OSPF. Now it explores P4 and adjusting the software content.
AI-era questions
- Can it be offered to high-school students? (Lots of knowledge, should lean more toward practical popularization.)
- AI-generated-code policy: don't let the model generate code; current plagiarism detection mainly targets "mindless copy" types.
- How to design assignments that "students can only do by learning, and AI can't do"? Hard — AI is trainable; perhaps make assignments closer to the real world.
- Students inevitably reuse past years' code: besides yearly updates, what else? (Question bank "choose 3 of 6"? Forbid publishing past code? Use attack-lab-style per-student generation?)
Gamification ideas
- Make assignments attract students like a game (e.g. an honorary ranking system — "congratulations, you're Tsinghua's Data Structures King").
- Finally shares the SIGCSE paper Prompt Problems: A New Programming Exercise for the Generative AI Era (students write a prompt for an LLM to complete a programming task).