瞿强
近年来,STEAM教育越来越受到教育领域的关注,编程教育作为STEAM教育和创客教育中的重要一环,其内容也被编入中小学信息技术课程中。但编程过程相对抽象,如何吸引学生并使他们轻松学习编程知识,是摆在广大教师面前的一道难题。下面,笔者就来梳理并探讨STEAM教育理念下编程课程的教学策略。
一、STEAM教育与编程教育的关系
STEAM的五个英文字母分别代表五门学科,即科学(Science)、技术(Technology)、工程(Engineering)、艺术(Art)及数学(Mathematics)。STEAM教育将多个学科内容进行融合并形成一门以项目教学为主的综合性课程,倡导在问题解决驱动目标下的跨学科学习,旨在培养学生提出问题、分析问题和解决问题的能力以及团队协作能力等。而编程教育主要是培养学生的逻辑思维能力和计算思维,在我国中小学信息技术编程课上,较常用的可视化模块编程软件工具有Scratch、App Inventor、Alice、Mixly等。
1.编程与科学
计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科,从抽象的算法分析、形式化语法到具体的主题如编程语言、程序设计、软件和硬件等。
2.编程与技术
软件编程属于IT领域,IT(信息技术)是管理和处理信息所采用的各种技术的总称,它主要是应用计算机科学和通信技术来设计、开发、安装和实施信息系统及应用软件,通常又被称为“信息和通信技术”。
3.编程与工程
中小学生不可能去实际接触如同土木工程、水利工程这样的大型项目,但编程设计可以在实施具体程序项目时,利用相关工程学原理。编程所培养的应该是有工程意识的人才,在编程学习中学生可以对整个程序进行总体规划,考虑程序项目的合理性、代码规范性、功能拓展等内容。
4.编程与艺术
编写优美的程序需要灵感和高超的技巧,就像建筑师设计地标性建筑一样,充满乐趣和挑战。整齐且结构合理的程序就像经典建筑一样耐人寻味,所以计算机编程同样需要艺术,程序员就是创造编程艺术的代码艺术家。
5.编程与数学
编程包含了丰富的数学知识,比如计算坐标移动的具体位置。编程最重要的核心就是算法(算法代表着用系统的方法描述解决问题的策略机制),而算法的编写需要一定的数学基础。
本研究借助的是可视化编程工具Scratch,学生通过简单的图形化积木式的拖放组件便可以完成编程学习,激发学习兴趣,培养创造性思维和计算思维。
二、STEAM教育在编程课堂中的六大教学策略
1.激发兴趣,提高学生学习兴趣与动力
学生探索的动力来自对所学内容的兴趣,编程教育不应将学生学习编程的乐趣剥夺,教师需要不断研究、分析编程课程的特点和教学方法,结合学生实际情况进行学情分析,找出学生的兴趣激发点。以“救援英雄”一课为例,笔者采用了情境教学法和游戏体验教学法。开始新课前,给学生播放电影《海防最前线》中海防救援人员用直升机解救风暴中落水者的片段,而后又让学生体验“救援英雄”小游戏,该小游戏就是仿照电影情节制作出来的Scratch游戏,这激发了学生想要自己制作游戏的欲望。
案例1:“救援英雄”课堂激趣环节
师:“同学们,让我们一起来分享一段视频。”(播放视频,和学生一起讨论气候现象和科学知识)
师:“相信每位同学的内心深处都有一个英雄梦,今天就让我们在课堂上,用我们所学的知识,实现我们的英雄梦!”(展示课题)
教师首先用PPT展示如下虚拟场景:
一架MA120小型飞机发生故障,紧急迫降在海面上,机上六名乘客全部落水,作为一名海上搜救队的搜救员,你要开着直升机去救落水人员。这片空域常有海鸟出现,为避免与之相撞,你需要小心驾驶,在保证自身安全的前提下,安全救出全部落水人员。
接着教师邀请一位学生体验“救援英雄”游戏,并尝试分析游戏流程,思考为什么要这样设计游戏。
2.教学创新,将抽象復杂的问题模块化
本课的教学目标是让学生经历“分析剧本—提炼关键词—绘制流程图—编写程序”的过程,掌握将自然语言转换为计算机语言的方法,并能用学到的编程语句完成小游戏的设计制作。
在“救援英雄”编程课的设计中,笔者灵活运用以下多种教学方法帮助学生构建知识。第一,情境创设法。通过惊险的视频,带领学生进入救援英雄的世界,充分调动学生学习的积极性。第二,激励教学法。通过不断启发、引导,让学生发现问题,自己寻找解决问题的方法。第三,任务驱动法。通过布置任务,调动学生勇于冒险、敢于探索的积极性。第四,小组探究法。通过小组讨论、互助、探究、展示,提高学生学习效率。
案例2:“救援英雄”课堂教学环节
游戏体验结束后,教师提问:“这个游戏是怎么制作出来的呢?”
学生发表各自看法,教师引导学生理解什么是“工程”项目,抛出游戏开发这个环节,进而让学生理解“游戏开发流程图”。
分析剧情与编写代码:
“救援开始,救援直升机的螺旋桨飞旋着呼啸疾飞,落水乘客戴着救生圈在水中等待救援。现场环境复杂,你用光标控制键操控飞行方向,在搜索区搜寻并营救落水者……”从剧情中提炼出两个关键词:一是“直升机呼啸疾飞”,画出流程图,然后用“改变造型”语句以及“重复执行”语句加以实现;二是“操控飞机做上下左右的飞行”,将使用上节课所学的“光标控制移动”语句来实现。
设计“遇险者”,是本课的教学重点和难点。通过剧本引导学生找到关键词“脱离险境”,引导学生思考如何将之转换为Scratch语句——“遇险者如果碰到救援者,就会被隐藏,否则就继续显示。”此时提问:“这与我们之前学过的外观模块中的什么语句相似?”学生不难回答出是“将颜色改变”语句,可以邀请两位学生合作,在教师机上尝试完成这段程序。
随后请学生思考“如何才能判定救援成功”。展示流程图,帮助学生理解计数器的工作原理,提醒学生“在数学中把不断变化的、可取不同值的量称为变量,在Scratch中可以使用变量来实现计数器的功能”。之后邀请学生上台,在流程图和教师的引导下,完成计数器的编写,从而让学生成为难点问题的“突破者”。
3.勤思妙想,培养学生创新精神和实践能力
在课程内容上,整个“救援英雄”不仅有技术学科中的编程技术,也运用到了数学学科中的坐标计算、艺术学科中的美学设计、工程学科中的合理布局等知识。在设计和完成的过程中,学生应用多学科的知识综合解决问题,并在设计过程中融入个人创意,创造富有个性的游戏。
4.动手实践,提高分析问题和解决问题能力
课堂教学中,布置课堂任务是完成学习任务的起点。下面列出的是“救援英雄”的三个课堂任务,每一个任务难度不同,知识目标不同。
案例3:“救援英雄”课堂任务布置环节
课堂任务:两人一组,讨论并构思一段故事情节(如海上救援、极地救援、消防员灭火、大鱼吃小鱼等),将故事情节记录在创意设计书上,并运用Scratch将这段情节编写成一个小游戏。
任务1:设计“救援者”
设计一个能由光标键控制运动的角色(如救援直升机、战地救护车等)。
要求:
(1)角色在运动过程中有造型的变化。
(2)角色由光标键控制,在舞台范围内上下左右均可移动。
任务2:设计“遇险者”
设计多个“遇险者”角色(如受伤的群众、落水者等)。
要求:
(1)“遇险者”在运动过程中有造型的变化。
(2)“遇险者”在接触到“救援者”时会隐藏。
(3)所有“遇险者”获救后,程序结束。
拓展任务:设计“干扰者”和游戏结束条件
“干扰者”的出现时刻威胁着“救援者”的安全,请设计一个危险的“干扰者”角色(如飞鸟、热气球、大火等)。
要求:
(1)“干扰者”在舞台范围内随机移动。
(2)利用“变量”技术,判断“遇险者”是否已被全部救出,然后游戏结束。
STEAM课程的开放式学习特征会导致学习者进度参差不齐,需要教师采取个别化的指导策略。如布置第二个任务时,教师可为学生提供相关学案,帮助学生通过学案巩固知识点;进行拓展任务时,教师可提供给学生Scratch程序模块的使用图解,教会他们通过程序模块的注解理解该程序作用,从模仿到原创,让学生在制作游戏项目中逐渐学会如何通过自学去完善和优化项目。
5.分享交流,有助形成评价维度的多元化
作品制作完成后,每个小组依次到演讲台,作为分享者给其他小组同学展示自己的作品,并分享各组的分工方式、创意来源、流程步骤、作品结构及亮点,同时也可以把自己组在完成过程中遇到的困惑讲出来,并与其他小组同学进行互动。这种路演模式不仅培养了学生协调能力和语言表达能力,還为组与组之间搭建了一个学习的平台,通过路演及时发现作品问题,以便在后期进行修改和优化。
编程课堂采用自评与互评相结合的发展性评价方式,学生除了展示作品外,还需介绍项目背景、团队组成、设计思路、创作过程、创新点说明等,同时还要从故事情节、技术实现、科学原理、工程规划、代码逻辑、艺术表现、小组合作、创意实现、现场答辩等方面多维度相互评价与反思。师生评价、自我评价与生生评价注重对学生创新方法、创新过程、创新成果进行全方位多维度的评价。
6.学科融合,培养跨学科思维和综合性实践能力
STEAM教育要求进行跨学科的融合,在教学活动中要引导学生在分析问题时认识到可能涉及的学科知识,找出这些知识点并解决理论知识上的盲区,利用跨学科的学习方式来提高自学能力。同时,如果教师在备课时能梳理出教学中可能涉及的主要学科知识和能力,将有助于进行有针对性的教学辅导。以“救援英雄”活动为例(如下表),在梳理目标后,教师可以非常清楚地引导学生一步步从初级目标到达高级目标,达到学科衔接的目的。
综上,笔者针对“救援英雄”制订的有针对性的教学策略,使STEAM课程发挥了它的价值,促进了学生提出问题、分析问题、解决问题的综合能力,真正融合科学、工程、技术、艺术、数学的学科精髓,有利于学生跨学科思维能力的培养,助力学生创新能力和综合实践能力的发展。