Learning tools | Archived project
Panda Courier
A visual programming experience that guides learners from simple instructions to reusable algorithms.
Learning design | Visual programming | Blockly
A learning progression
Background
I developed Panda Courier for a study visit by French secondary school students scheduled for 21 July 2026. The brief was a visual programming session for learners aged 12–16: an enjoyable, practical introduction that would fit into an hour.
The browser game lets students use Blockly to guide a panda through a maze and deliver a parcel. Programming, execution and demonstrations share the same interface, keeping the activity manageable within an hour.
Design
The course evolved as more information about the students became available. After learning that the group consisted of French students of Chinese heritage, I switched the default slides from English to Chinese, retaining all three language options. The activity also changed from group participation to individual challenges.
Increasingly demanding routes structure the course. The first four levels introduce sequences, orientation, loops and repeated groups of actions. A revised fifth level adds conditions and a loop that ends when the parcel is delivered, so students can use their surroundings to decide what to do next.
The main sequence focuses on movement, control flow and sensing. Two optional challenges ask students to repair a program and define a reusable action. They give students who finish early further work within the same application.
Implementation
The application converts the Blockly workspace into an instruction tree. A TypeScript interpreter executes the tree and returns a trace of movements, turns and collisions. The interface plays this as an animation and highlights the block responsible for each action. The interface and unit tests share the same execution logic.
Scoring and leaderboard logic sit outside the interface, with a Bun service storing results in SQLite. The course materials follow the application’s level sequence. Worked answers use screenshots of completed blocks in the actual interface, so students can relate the explanation to what they are using.
Challenges
- Matching the challenge to the students. Learning that most students were at lower secondary level prompted me to reconsider their possible programming experience. The original later levels could be solved with a fixed route and placed limited demands on conditions or reusable programs.
- Handling programs that cannot finish. More flexible loops introduced programs that could make no progress or perform many nested operations. Execution feedback needed to explain why a program stopped.
- Keeping rules and materials aligned. Saved scores needed to match revised unlock criteria, while the presentation of answers needed to support students’ own attempts and debugging.
Solutions
The redesigned final challenge runs the same program on three fixed mazes. Each test resets position and orientation, with stars reflecting both maps passed and blocks used. Test cases pair a program that follows the right-hand rule with an earlier fixed route: they check that the general program passes all three maps and the fixed route fails at least one hidden variant.
The interpreter detects loops that make no progress and enforces a limit of 1,000 steps, with a separate operation limit for nested instructions. It returns explicit outcomes, including success, collision and an unfinished route. The trace connects these results to the student’s blocks, giving them a place to start debugging.
Stored scores carry a rules version, and the database sits outside the application image. Answers first moved to the end of the slides; a later revision added an option for students to reveal them, hidden by default. The same materials support demonstrations, practice and checking a solution.
Outcomes
The completed application brings together levels, execution feedback, saved scores and course materials in three languages. During preparation, the course expanded to ask students to observe their surroundings, design rules and test a program across different maps.
Automated cases capture the assessment requirements, providing repeatable checks for fixed routes and programs that respond to their surroundings.
Panda Courier is now an archived project, and its online service has been retired.