透过游戏看编程,抓住编程教学的核心

    王蕾

    编程学习在全球范围内掀起一阵又一阵热潮,已经走进信息技术教材。游戏任务驱动是编程学习的有效的教学方法,但学生和教师往往只看到“游戏”,并没有看到编程教学的本质。

    学生喜欢“好玩”的编程

    如果你走进学生中间,询问他们对编程的看法,你可能会得到五花八门的答案。有人觉得编程很难,很枯燥,有人觉得编程很有趣……但面对“好玩”的编程软件或平台,大家都愿意试一试。

    笔者联系自己的教学实践,发现学生这种主观感受与学习经历相关联。他们在小学习惯了图形化编程和块语言,到了初中一下子接触行命令语言,自然是不适应并且觉得有些无趣。

    编程的核心不是玩

    兴趣是学习的重要前提,但学习不能仅靠兴趣,任何一门语言深究起来都是复杂且枯燥的。在编程教学中,要关注学生的体验感和成就感,但如果学生只抱着“玩”的心态去学,没有思考和总结,结果肯定不会好。那学习编程的核心是什么呢?笔者认为,编程的核心是算法,即解决问题的思路。它是一个从宏观到微观再到宏观的过程。在编程中弄清解决问题的办法,才能保证学习的结果,也就是培养了常说的“计算思维”。

    如何借助游戏学好编程

    在2017年修订的《江苏省义务教育信息技术课程纲要》中,关于“算法与程序设计”模块的教学要求是:通过本模块的学习,了解算法设计的一般方法,了解一种程序设计语言,尝试利用一种程序设计语言实现简单的算法;了解利用计算机进行问题求解的基本思想、方法和过程。基于此,很多教师都选择简单易用的软件,降低语言实现的难度,如有的教师以编写小游戏为任务驱动,在提高学习兴趣的同时,激励学生进行算法的思考,最后让学生充分体验编程的愉悦感和成就感。但也有的教师过分纠结课程的趣味性、学生的体验感以及软件操作的难易程度。笔者认为,编程教学可以分为三个层次。游戏任务驱动只能作为最低的层次,透过“游戏教学”激发学习兴趣,明确学习任务和目标。编程的核心是算法分析,也就是第二层,通过相应的训练将复杂的大问题分解成更能解决的小问题,并且逐个击破,同时能厘清问题之间的逻辑关系。編程学习的最高层次是思维和素养的培养。

    需要说明的是,算法最终还是要通过脚本实现,将人类语言转化成程序语言,因此适当地记忆语言命令和熟悉软件操作也是必不可少的。

    基于扣哒世界平台的编程教学

    2020年,笔者了解到一个学习Python的平台——Code Combact扣哒世界。说起扣哒世界,学生会说它是一款,学习编程的角色扮演游戏。玩家扮演一个英雄,通过输入代码控制英雄角色通过游戏中的关卡冒险。但是很少有人能说出,扣哒世界支持多种编程语言——JavaScript、C++和Python,游戏涵盖了编程基本语法、循环、字符串、变量、方法调用、矢量绘图等主题。因为看到了这些特点,于是笔者借助它开展了Python语言的大班化教学。

    一开始,学生们热情高涨,每节课一进机房就开始登录闯关,学习能力强的学生一节课能闯10关,学习能力稍弱的学生一节课也能闯3关,笔者大都是扮演答疑的角色,也会适当提醒他们做一些笔记并且小组互助。有一天,笔者没有让学生继续闯关,而是找出一个中等难度的关卡(学生基本都已经通过),让他们说说闯关的思路或画下流程图,但只有个别学生举了手,笔者又问几个经典语句怎么写,全班学生几乎都没有举手,再看学生的课本上也没有做多少笔记。原来,学生平时只记首字母,因为输入首字母后,有很多语句可选择,不需要一个个字母输入。这样,虽然学生看似闯关通过了,也尝到了成功的体验,实则并没有真正学会知识。闯关过程中,学生没有注重算法分析,只看重游戏化的编程环境,抱着“玩”的心态学编程,却忽略了虚拟环境与真实世界的联系,计算思维未得到有效培养。

    游戏平台本身没有问题,问题出在教师的引导和学生的学习习惯上。那具体该怎么做呢?笔者采取了如下做法:

    第一,教学目标明确,闯关任务分层。针对明确的教学目标划分关卡,如“计算机入门(一)”共有19关,可以分为“基本语法”“循环”“判断”“变量”四个大的单元和最后的综合练习。虽然很多关卡都围绕一个知识点展开,而且很多关卡都是对前一个关卡重点内容的巩固练习,但是大班课建议每节课只闯2~3关。将其中的概念性挑战作为学有余力学生可以尝试的拓展题,不做硬性要求。放慢教学进度,吃透重难点,告别盲目闯关。

    第二,授课收放自如,营造浓厚氛围。既然是授课,就要有导入、新授、巩固和总结分享等完整的教学环节。每个环节的时间也要充分保障,又要详略得当,有放有收,有任务有总结。时间从哪里来?就是在控制闯关数量之后多出来的时间。教师可以花时间引导学生对算法进行分析,在分析的过程中要提醒学生把自己想象成“英雄”,结合生活实际考虑问题及解决的方法。学生可以花时间独立思考和小组讨论,画流程图记录算法,用笔记的方式记录下新学的语句、单词和自己的心得体会。教师还要选学生代表,上台演示、讲解、分享,营造编程学习的氛围。

    第三,填写通关日志,及时发现问题。很多学生并没有养成记笔记的良好习惯,扣哒世界的开发者们曾推荐教师使用“通关日志”。它是参照“PPCA原则”设计的:首先明确目标(Project),知道我要解决什么问题;其次设计算法(Plan),做出计划;再次编写代码(Code),用语法规则写出对应的代码;最后优化代码(Adjust),发现疏漏,寻找更好的计划,或用更好的代码实现。笔者认为,学生在学习编程的过程中之所以健忘是因为没有及时留下学习痕迹,思考和归纳总结的能力也亟待提升。如何直观地体现这些能力,通关日志不失为一个好做法。笔者在每一关都会下发一张日志,学生把相应的内容记在上面,包括自己遇到的问题或心得体会。下课时所有学生的日志都上交,教师批阅后下节课点评下发。这样一学期下来,每个学生的日志都能整理成册。

    游戏教学的本质是编程教学,编程的灵魂是算法,信息技术课应加强编程教学,真正锻炼学生思维和解决问题的能力。游戏任务或平台只是支架,选择什么平台和编程语言也是次要的,最重要的是放眼未来,让学生所得真正能迁移到未来的生活和工作中。