纪鑫琰,李鸿科,赵 瑞
(陕西科技大学 教育学院,陕西 西安 710021)
计算思维被认为是学生必备的信息技术学科素养之一[1]。国务院在2017 年印发《新一代人工智能发展规划》提出,应逐步在中小学日常教学中推进编程教育,开设人工智能相关课程[2]。当前,我国大部分地区已经开设了少儿编程课程来培养学生计算思维能力,但由于编程教育仍处于发展阶段,仍存在诸多问题亟待解决。
为此,本文提出游戏化编程的教学方法提升学生编程教学体验,培养学生计算思维。
现阶段,培养学生计算思维的主要方式为编程教学。例如,杨文正[3]运用Scratch 编程教学培养学生问题界定、特征抽象、算法设定等计算思维的核心能力。龚鑫等[4]结合Flash 编程游戏——Lightbot,在游戏化编程情景下探索培养学生计算思维的方法。丁世强等[5]设定编程项目及游戏化情景培养学生计算思维。孙立会等[6]以Scratch 编程为媒介,通过实践教学探索学生计算思维的培养路径。
综上所述,通过编程教学培养中小学生计算思维的研究大多采用了可视化编程工具,为学生营造游戏化、趣味化的编程环境。在学习过程中,引导学生自主探究问题、编写程序、解决问题,以提升自身计算思维。
不少学者提出通过多学科融合教学培养学生计算思维。例如,孙立会等[7]发现,数学、科学及信息技术学科与学生计算思维能力的发展存在正向积极关系。张屹等[8]通过STEM 课程案例——会打招呼的机器人,实践证明该课程可培养学生创造性思维,提升学生解决实际问题的能力。李峰[9]设计计算思维与食物链课程案例,结合计算思维的学与用,围绕项目活动探索培养学生计算思维的路径。
以上研究大多融合数学、科学、工程及信息技术学科培养学生计算思维。在学科融合教学中,围绕项目活动开展教学,让学生自主操作,在解决实际问题过程中提升自身计算思维。然而,编程教学、多学科融合教学的方式仅将计算思维的核心理念融于教学环节中,未具体落实到策划构思、模式构建、逻辑分析、问题解决等思维能力的培养,未能从多方面培养学生计算思维。
为此,本文基于现有游戏化教学和计算思维培养的相关研究,构建游戏化教学情景,以游戏故事情节的发展推动编程教学进程,通过分配游戏角色、分析游戏冲突、开展游戏活动等方式提升学生问题分解、模型建构、迭代试误等方面能力,增强学生解决复杂问题的信心、处理棘手问题的恒心、发生冲突的包容心及团队沟通能力。
在中低年龄段,学生心理认知方式正由形象思维向逻辑思维过渡,但在日常学习和生活中仍以感性认识为主。因此,相较于文本编程,学生对可视化和图形化编程的兴趣更大。并且,可视化编程只需学生按要求叠加相应的程序指令模块即可使屏幕显示的角色完成相应动作,既符合学生心理认知活动的发展规律,又锻炼了学生的实际操作能力。
可视化编程学习不要求学生掌握复杂的程序代码和语法,只需在脚本区按照一定逻辑顺序完成程序指令模块即可实现相应的程序操作,相较于记忆编程方式,能够使学生了解编程的内在逻辑。在理清编程的思路后,学生仅需按照剧本要求,在脚本区对程序积木进行组合即可完成任务目标。
游戏化编程教学的本质是充分挖掘编程的娱乐属性,提升学生积极性、编程学习能力及计算思维能力。该方式让学生推动故事情节发展来完成编程项目,使屏幕上的游戏角色完成相应动作,为编程教学增添了趣味性和故事性,使低年龄段学生能够以轻松愉快的心情学习编程,有益于激发学生求知欲,增强学生创造力。
由于中小学学生接触编程的机会较少,大部分都是第一次进行编程学习,不具备任何编程经验。显然,英文文本类编程并不符合中小学阶段学生的认知特点,学习难度较大。因此,应按照实际情况选择教学方式,既要保证编程内容的前沿性[10],又要给学生营造一种良好、愉悦的编程学习环境。
游戏化编程教学是一种贴合学生生活的编程教学模式,在教学过程中能联系学生生活经验,与数学、科学、艺术等学科相互交融,极大丰富了学生的知识面。
以游戏化编程与数学学科交融为例,使用编程绘制一个正多边形前,需考虑多边形的内角和、每个角大小、旋转角度等方面的数学知识。因此,学生不但要熟练掌握编程操作技能,还应具备相应的数学知识。这对于中小学生而言,虽然难度较大,但能够提升学生自主学习能力。
4.1.1 游戏选题
学生对问题的认知是掌握编程对象、确定编程算法、梳理编程框架的基础。通过游戏化选题提升学生自主思考的意识和能力,需要在游戏化情景导入编程时,引导学生对为什么该角色需要完成这样的任务?如何才能帮助该角色完成任务等问题进行深入思考,提升学生多角度、深层次认识问题的能力。
4.1.2 游戏表述
编程教学中最重要是将自身想法转换为计算机语言,此时就需要教师对学生进行引导。因此,教师在课程教学中应有意识地引导学生进行语言转换,使学生在编程环节寻找合适的程序指令模块实现编程效果。具体的,首先教师带领学生对编程问题进行自然语言描述;然后引导学生对描述语言进行梳理,并以流程图形式将问题具体化;最后,依据程序设计框架将自然语言转换为计算机程序指令。
4.1.3 游戏情境
可视化编程应用提供的编程情景更适合中小学学生,为建构学生编程知识提供了新途径[11]。在游戏化情景学习编程,有助于学生在原有知识及认知上对编程知识及编程操作进行深入理解,从而完成对知识的主动建构。
游戏化编程教学设计应突出游戏化教学优势。例如,通过游戏化教学模式锻炼学生发现问题、分析问题、解决问题的能力。教师以游戏故事为教学主线,抛出问题引发学生思考,并对如何使游戏角色完成任务进行假设,从而制定合适的教学方案引导学生通过编程实现游戏效果。
此外,技能训练应包含学生思维训练,在教学过程中通过提问、思路梳理等方式引导学生逻辑化地整理自身思维,养成分析问题、建立模型、运行方案、解决问题的习惯,引导学生逐步将其发展成一种习惯化的思维能力。
为了解游戏化编程教学对学生思维发展的实际影响,将游戏化编程教学案例分为教学思路设计、教学案例实施和教学案例3个部分进行解析。
4.3.1 教学设计思路
游戏化编程教学活动分为游戏导入、明确问题、算法设计、迭代实施、交流展示、课堂总结6个环节。
具体的,游戏导入指教师带领学生以特定游戏活动展开教学,可分为游戏活动导入、游戏视频、游戏故事导入等;明确问题指通过游戏活动切入学习主题,明确学生学习任务;算法设计指在明确问题后,对程序指令模块进行分析、组合;迭代实施指对程序进行更迭试错和解决问题;交流展示指将学生完成的作品发布至终端进行保存,以便于教师查看、评分;课堂总结指教师进行内容总结、步骤回顾、思路梳理。教学思路设计流程如图1所示。
Fig.1 Design of teaching ideas图1 教学思路设计
4.3.2 游戏化编程案例设计
以《在编程中学会创造学会创造》(第一册)课本的第十七课决战超声蝠——捣乱为例,结合学生计算思维培养目标设计游戏化教学。
本次教学采用线下课堂授课方式,学习对象为小学4年级学生,教学内容主要讲述编程元素的基本操作、嵌套循环、分裂积木块等。教学目标为:①掌握积木库中重复执行积木块应用,学会分裂积木块;②引导学生开展交流合作,增强团队协作和人际交往能力;③提升学生编程兴趣;④培养学生计算思维。
(1)游戏导入。教师展示源码世界的故事动画片段,导出教学内容——如何通过编程猫制作游戏动画。
(2)明确问题。明确编程对象,只对超声蝠的动作及动画效果进行编程。教师采用小组讨论方式对超声蝠动作和动画效果进行规范化梳理,引导学生在课堂中进行讨论并画出思维导图,如图2所示。
(3)算法设计。教师带领学生对编程对象动作、大小设定及超声蝠在屏幕中的角度进行分析,从而明确所需算法。具体流程如图3所示。
Fig.2 Problem sorting图2 问题思路梳理
Fig.3 Algorithm design图3 算法设计
(4)迭代实施。首先,教师向学生讲述循环嵌套结构的原理及应用,并安排活动任务。然后,引导学生对程序指令模块进行拼接、组合,当出现嵌套位置错误情况时应及时进行编程纠错。最后,讲述分裂积木块的操作原理,引导学生对分裂积木块进行操作,在试错中学会分裂积木块的正确使用方法。
(5)交流展示。作品完成后,学生小组内部推荐一人展示作品,供全班同学进行点评。
(6)课堂总结。教师进行课堂总结,回顾循环嵌套结构的原理、分裂积木块的使用方式及注意事项。
4.3.3 游戏化编程案例分析
(1)游戏选题—嵌入问题—思维启发。为了让编程问题通俗易懂,本文采用游戏故事导入方式嵌入编程问题,设置故事情节导出编程教学问题,为学生认识问题、分析问题、解决问题奠定基础。
(2)游戏角色—分配问题—思维发散。在教学案例设计中,将编程问题分配给游戏故事中的具体角色,使问题更容易被理解,学生在设计解决方案时动力更大,在梳理思路、建构编程模型时逻辑性更强。
(3)游戏冲突—分析问题—思维聚焦。引导学生分析游戏角色间的活动及冲突,尝试利用编程方法解决问题。例如,将设置变量参数、执行嵌套模式、设置造性切换、设置运动轨迹具象为游戏角色间的活动,以便于学生对问题进行梳理。
(4)游戏过程—解决问题—思维转换。编程教学以游戏故事发展脉络为线索,推动编程教学。在解决问题过程中,教师鼓励学生编程初步完成程序作品,后续再进行调试和完善。以此提升学生的迭代思维和解决问题的能力。一旦遇见难度较大问题时,教师则应及时对问题进行分解、指导。
(5)游戏结果—反省问题—思维总结。在教学中通过游戏活动、自主交流、角色扮演等方式,使学生亲身感知、动手操作、发现问题、解决问题,提升学生的实际动手能力和逻辑思维。此外,游戏化编程为师生提供轻松愉快的编程环境,减少学生排斥心理,提升学生学习积极性。
在教学实施过程中培养学生的计算思维能力,以问题为导向嵌入、分配、分析和解决编程问题来发展学生的抽象化概括能力、问题分解能力、算法思维及归纳能力。同时,积极引导学生归纳总结问题发生的规律,提升学生解决问题的逻辑思维能力。
游戏化编程教学对发展中小学学生计算思维具有建设性的意义,符合学生学习编程的心理认知和操作应用发展水平,能显著提升学生计算思维。本文在游戏化编程教学的基础上,重点分析可视化编程培养学生计算思维能力的优势。实践表明,该方法能显著提升中小学学生的计算思维能力和学习积极性。后续,将从其他角度探索学生计算思维的发展路径。