教学工具 | 历史项目
Panda Courier
图形化编程学习体验,带领学生从简单指令逐步理解可复用的算法。
学习体验设计 | 图形化编程 | Blockly
学习递进
背景
Panda Courier 的起点是一次定于 2026 年 7 月 21 日举行的法国中学生研学活动。我需要为 12–16 岁的学生准备一小时左右的图形化编程体验课,希望他们能在动手过程中感受到编程的乐趣。
课程采用浏览器中的关卡游戏,让学生用 Blockly 积木控制熊猫穿过迷宫、投递包裹。编程、运行和演示集中在同一网页,便于在一小时内完成教学安排。
设计
筹备过程中,课程随着学生信息的补充逐步调整。原先准备使用英语课件,得知学生都是法籍华人后,我改为默认使用中文,同时保留中、英、法三种语言的选择。原先的小组模式也改为每位学生独立完成挑战。
关卡通过逐步增加路线要求安排学习顺序。前四关依次引入顺序执行、朝向、循环,以及循环中的复合动作。后来重新设计的第五关加入条件判断和“重复直到送达”,让学生利用周围环境的信息决定下一步。
主线集中在动作、控制流程和环境感知。提前完成的学生可以进入两个扩展挑战:修复有错误的程序,以及定义可以重复调用的动作。这样,不同进度的学生都能在同一个应用中继续学习。
实施
Blockly 工作区先转换为指令树,再由 TypeScript 解释器执行,生成移动、转弯和碰撞的轨迹。界面依据轨迹播放动画,并高亮当前动作对应的积木。课堂界面与单元测试使用相同的执行逻辑。
计分与排行榜逻辑独立于界面,由 Bun 服务将成绩存入 SQLite。课件与应用保持相同的关卡顺序,并用实际页面中搭建完成的积木截图讲解答案,方便学生将讲解对应到操作界面。
遇到的问题
- 课程难度与学生基础的匹配。 得知大部分学生是初中生后,我重新评估了他们可能已有的编程基础。原有后期关卡可以通过固定路线完成,对条件判断和程序复用的要求不足。
- 学生写出的程序可能无法结束。 更灵活的循环也带来了没有进展的循环和大量嵌套操作,执行反馈需要让学生看懂程序停下来的原因。
- 规则与课件的同步更新。 关卡调整后,旧成绩与新的解锁条件产生了差异,答案的展示方式也影响学生尝试和调试的过程。
解决方案
重新设计后的终局挑战要求同一份程序通过三张固定迷宫。每次测试重置位置和朝向,根据通过的地图数量和积木数量评定星级。测试代码同时包含右手规则程序和早期的固定路线,检查前者能通过三张地图、后者会在至少一张隐藏地图中失败。
解释器加入了无进展检测、1,000 步上限和嵌套指令的操作次数限制。它返回成功、碰撞、路线未完成等明确结果,再通过执行轨迹对应到学生使用的积木,为调试提供线索。
成绩记录携带规则版本,数据库独立于应用镜像保存。答案的组织方式也经历了调整:先移到课件末尾,后来增加显示开关,默认隐藏,由学生自行选择查看。这样,演示、练习和查看解法可以使用同一套材料。
成果
最终完成的教学应用包含关卡、执行反馈、成绩记录和三语课件。课程在筹备中逐步增加了观察环境、设计规则和检验程序的任务;学生可以修改自己的解法,并查看它在不同地图中的表现。
自动化用例覆盖了课程的判定要求,使固定路线和基于环境作出判断的程序可以接受重复检查。
Panda Courier 目前作为历史项目展示,原在线服务已经退役。