彭仁杰 江苏省苏州高新区教学研究室
计算思维是指个体运用计算机科学领域的思想方法,在问题解决过程中涉及的抽象、分解、建模、算法设计等思维活动。如何培养学生的计算思维是这几年讨论的热门话题,通过多年的教育教学及反思,笔者认为编程教育虽然不是培养计算思维的唯一途径,但都是最有效的途径。计算思维涉及的二级指标分解、抽象、归纳、算法思维和评估,都能在编程中找到。因此,编程教育是目前中小学信息科技课程中的重要环节。
部分教师把教学目标和教学重点放在了知识点的传授上,常常忽略对学生思维的培养,如过度强调语法的讲解、用刷题的形式来判断学生对知识是否掌握等。编程教学还停留在“学编程”阶段,很难做到促进学生思维的深度提升。
部分教师采用的“任务驱动”形式过于单一,延用了操作性任务的课堂组织方式,如演示的操作和后期学生需要完成的任务一致、学生一遇到问题教师就演示讲解、最后用能否模仿任务来简单评价学生的学习状况等。
在编程教育中经常会遇到学生学习积极性不高、遇到难的问题不愿意积极主动思考的现象,导致学生被动接受知识,过度依赖教师,实践活动没有创新,学习效果不够理想。
如何更有效地进行编程教育,真正让编程教育提升学生思维,一直是信息技术教师讨论的话题。笔者在多年的教育教学实践中发现,引入游戏化策略是一个很不错的选择。
玩游戏是让学生在玩游戏的过程中体会算法思想。例如,在学习递归法的时候,先让学生玩“汉诺塔”游戏,看谁玩的层数多,再让学生讨论游戏攻略,让学生体会把大问题分解成小问题,到边界后回归的过程。当有了游戏的体验以后,再提出递归的概念,学生就更容易理解。学生在玩游戏的时候注意力非常集中,思考如何玩游戏的过程,正好是体验算法思想的过程。当有了较为深入的体验后,教师再讲解总结,学生就会很容易吸收理解,后期的代码编写完成度更高。
设计游戏就是让学生在游戏设计过程中提升计算思维。例如,初中学习VB时可以让学生设计“超级玛丽”游戏,让玛丽从左边跑到右边,并能实现一些功能,如循环跑、遇到陷阱掉落、用空格控制跳动等。当学生变成游戏的设计者、开发者时,就能很好地调动他们学习的主观能动性。在设计阶段,学生会想尽办法把游戏设计得更好玩。在编写游戏代码的过程中,学生会更积极主动地去学习以完成游戏开发。在编写完成后玩游戏,还可以让他们有更强的成就感。一系列过程,让学生的设计思维、创新思维、计算思维、迭代思维等都得到了很好的锻炼。
笔者发现,在教学过程中好玩的游戏涉及很多节课的知识,但这些知识点与教材顺序并不一致,所以需要教师深入研读新课标内容,厘清教材逻辑和内容结构的关系,分析学生的认知结构,从而对教材进行二次开发,设计好玩且知识点呈现合理的游戏主题,让学生根据主题设计并完成游戏,从而全面提高信息素养。例如,在“打地鼠”游戏中,要求学生用约4课时的时间来设计开发游戏,完成对多个知识点的掌握(如下表)。
(1)开发的设计提升学生创新思维。在设计游戏的时候,教师不用一开始就限定游戏规则,可让学生自己设计游戏功能,最后比一比谁的游戏更好玩,让学生在设计游戏的过程中锻炼创新思维。例如,在“打地鼠”游戏中,有的学生设计了计时记分功能,有的学生设计了打错地鼠扣分的功能,有的学生设计了不同分值的地鼠不同的分数等。实践证明,教师只要注重引导,把课堂还给学生,学生就一定有无限的创意,也会有更强的编写意愿。教师需要利用提供支架、小组合作等方式让学生把创意变成个性的游戏功能,让学生在想象、创造、问题解决中不断锻炼自己的创新思维。
超级玛丽功能 知识点地鼠探脑袋 角色认识、循环语句地鼠随机探脑袋 随机数、坐标锤子的控制 鼠标控制、判断语句得分 变量开始按钮 广播
(2)利用高质量问题,提升学生思维的深度。问题能引发思考,但不是所有的问题都能引起学生关注和思考,教师可以利用游戏的挑战性,让学生解决一些具有挑战性的劣构性问题,让学生具备转化和生长知识、提升思维深度的能力。例如,在玩“汉诺塔”的时候,请学生谈论并总结出游戏攻略。学生根据这个问题,会总结每个塔盘移动的规律,从而找出游戏的规律,提高递归思维。再如,在玩“石头剪刀布”游戏时,教师提出如何在计算机里表示“石头、剪刀、布”三种状态,让学生思考如何抽象现实问题,提升学生抽象思维能力。
(3)利用作品展示,拓展学生思维的宽度。游戏的展示是非常重要的教学环节,教师可以让学生以个人或者小组为单位展示作品和分享游戏设计、开发的思路。有的学生游戏技能高超,有的学生代码编写巧妙,学生在相互分享中可以相互学习,拓展思维的宽度。同时,教师也可以带领学生一起进行反思和总结,促使学生对问题进行深入的认知,促进知识的构建。
很多教师发现学生在编程过程中经常出错,影响了教学进度,因此他们会特意降低难度以保证教学的顺利进行。教学支架的使用需要考虑教学难度、学生思维发展路径等多方面因素。在编程学习中,代码的调试也可以锻炼学生的思维,教师需要利用游戏给学生创造沉浸式环境,让学生发现问题、分析问题、解决问题,在不断解决游戏BUG的过程中提升思维能力,同时也可以深入理解迭代思维。迭代思维是编程教育中不可或缺的思维,好的项目需要不断迭代提升。迭代思维能促使学生根据解决问题的需要,自觉、主动地寻求更为恰当的方式来获取与处理信息。
2017年,国务院印发《新一代人工智能发展规划》,明确“人工智能成为国际竞争的新焦点,应逐步开展全民智能教育项目,在中小学阶段设置人工智能相关课程、逐步推广编程教育、建设人工智能学科,以培养复合型人才,形成我国人工智能人才高地”。在中小学新课标中也有对人工智能教育的要求。教师可以结合学生实际情况探索与人工智能有关的游戏,提升学生利用新技术创新性解决问题的能力。例如,小学阶段在用图形化编程工具编写了“赛车游戏”以后,可以与学生一起探索如何用开源机器人加传感器做赛车游戏,比比谁的赛车更快,软件和硬件的结合让学生更有学习的积极性。再如,高中阶段在用Python编写了“石头剪刀布”游戏后跟学生一起探索是否可以让计算机识别人的手势,做到真正的人机比赛,让游戏更真实,同时也让学生对图像识别和机器学习有更深入的认识。
很多教师对学生学习成效的评价过于单一,仅评价任务完成和未完成,这在影响学生学习积极性的同时也不利于教师对学生、学生对自己学习状况的判断。新课标强调以评促教、以评促学,体现“教-学-评”一致性,游戏编程是一个复杂的项目,简单的评价无法满足教与学的需求,需要教师探索多元评价的评价体系。
在评价内容上可以进行多元化的评价。对于学生学习状态,可以从课题参与、小组合作等方面进行评价;对于学生游戏作品,可以从完成度、创新性、设计性、游戏体验感等多方面进行评价。同时,充分发挥学生的主体地位,在评价时可以采用自我评价、组内评价、组间评价、教师评价等多元化评价,这种多元化的评价同时也是给创作者多角度的建议。
评价的时机需要教师智慧把握,不用局限于作品完成后,在小组游戏设计头脑风暴后、游戏作品展示后都可以进行组间评价,让学生在吸收他人意见后进行一次迭代,学生每次作品的迭代,都是对自己迭代思维的锻炼。
总的来说,基于游戏化策略的编程教育能很好地完成教育教学工作,学生计算思维也能得到很好的锻炼。但如何让学生在“玩中学、学中玩”,而不是玩得很开心、学得却很少,还需要持续的探索和迭代。教师需要不断学习课程标准,更新自己的教学理念,结合教学目标和学习目标,制订好详细的教学方案,才能真正寓教于乐,让学生在游戏中提升核心素养。