◇朱程璇(江苏:南京晓庄学院实验小学)
世界各国将编程能力的培养落实到国家政策中,根据青少年不同学习阶段制定相应的学习内容,并将编程教育充分融入校内课程。我国部分省市的中小学虽然已开设编程必修课,但是都处在探索阶段,课程体系并不完善。本文针对当前适合小学生的编程语言进行分析,并根据小学各学段学生的学习特点,总结出一套相对完善的编程校本课程体系,尝试给后来者提供帮助,希望他们能在此基础上进行创新和提升。
计算思维最早由周以真教授在2006年提出,计算思维是指应用与计算基本原理相关的理念来解决问题、设计系统、理解人类行为的一种思维方式。计算思维是人类的思维方式,建立在计算过程的能力和限制之上,是每一个人的基本技能,而不仅仅属于计算机科学家。
2016年《普通高中信息技术课程标准(征求意见稿)》明确提出,计算思维是指“个体在运用计算机科学领域的思想方法形成问题解决方案的过程中产生的一系列思维活动”。
校本课程是与国家课程、地方课程相互补充、相互协调,以教师为主体,结合学校办学理念,充分利用社区和学校的课程资源开发的课程。校本课程体系则是寻求国家、地方、校本三级课程在课程目标、内容、资源等方面的共通点,使其像立交桥一样形成层级化的发展态势,实现课程的贯通与融合。
我们根据小学生的认知发展规律、身心发展状况以及各项能力水平,针对编程教育的特点与小学生编程思维能力培养的过程,结合学校“整合教育”理念中培养“智慧”的小学生这项要求,对照不同学段将编程校本课程划分为五个阶段。二到五年级主要利用学校开设的每周一次的选学课程进行教学,六年级由于学校缺乏机器人及物联网相关设备,所以摒弃信息技术教材,以Python 为主要教学内容,利用信息课进行教学。如表1所示。
表1.基于计算思维的编程校本课程体系
Scratch Jr 是一款基于平板电脑的编程语言,可以用于编程教学的启蒙。学生只需要通过拖拽图形化的编程模块,就可以创造出互动故事和游戏。
Scratch Jr 上用图标的形式表示事件、运动、外观、控制等编程模块,让低年级的学生更加容易理解积木块的作用。学生搭建积木完成作品的过程中能够体会和感知到顺序、选择和循环三种基本的程序设计结构,形成对算法的初步认识。
第一阶段(Level1)通过Scratch Jr的学习,了解简单编程概念,熟悉Scratch Jr 界面基本操作;培养逻辑思维能力,理解程序设计机制,培养创造力,可以为后续Scratch 的学习奠定良好的基础。
Scratch 是美国麻省理工学院面向青少年开发的一款图形化编程软件,与Scratch Jr 相比,它将指令模块扩充为动作、声音、外观、控制、画笔、侦测、数字与逻辑运算、变量八大类。每个大类下面又包含若干小的指令块,并辅以适当的文字说明,学生只要根据指令块的文字就可以明白该指令块的作用。
第二阶段(Level2)学会使用Scratch 进行顺序、判断、循环等程序编写,了解不同模块的使用,完成稍复杂的项目,初步锻炼学生编程、逻辑及空间思维能力。
第三阶段(Level3)熟练掌握Scratch,了解复杂设计,了解简单算法原理和实现方法,能够将实际问题抽象成数学模型,能发挥自己独特的想象力和创造力,独立设计出精彩纷呈的小游戏或情节丰富的小故事,从而大幅提升思维能力、设计能力和沟通表达等各方面的综合素养。
Python 编程语言相对于C++、Java等其他编程有着“优雅、明确、简单”的特点,与自然语言很接近,小学生能够容易理解和编写Python 语言相关程序。同时,Python 提供了极为丰富的第三方模块,使得学生在学习Python 的基础语法后,可以立刻利用它来解决实际的生活问题。
第四阶段(Level4)熟悉Python 语言基础语法知识,适应从图形化编程到代码编程的转变。可以让学生利用Py‐thon 语言来实现以前Scratch 做过的例子,完成自然过渡,同时培养学生思维转化能力。
第五阶段(Level5)掌握Python 基本数据类型、语句结构和函数的使用;对实际问题可以抽象出数学模型并解决,逐渐形成利用编程解决实际问题的意识。
我们可以将编程教学与音乐学科融合,利用Scratch 的“播放声音”模块,来给我们做的游戏或者故事加上适当的音效,使其更加生动;利用“声音”模块的“弹奏音符”控件修改音高和节拍时长,进行乐曲的脚本编写,弹奏出学生耳熟能详的歌曲,如《两只老虎》《小星星》等;对音乐水平较高的学生,甚至可以再结合“设定乐器”模块,改变音色,进行多人合奏或者实现个人编曲。
我们也可以将编程教学与美术学科融合,利用Scratch“画笔”模块或者Py‐thon 语言中的turtle 海龟库,让学生画一些简单图形或者设计个性化的图案。比如我们可以改变画笔的颜色和半圆的半径,绘制出彩虹;利用随机数、图章等控件绘制出漫天烟花;利用定义变量结合递归的方法绘制出雪花;等等。
我们还可以将编程教学与数学学科融合,利用Scratch 的“变量”和“数字与逻辑运算”,结合四年级数学《认识多位数》,利用编程实现从个位开始依次输出一个多位数的每一位数字;结合五年级的《倍数与因数》,利用编程寻找一个数的全部因数;结合六年级的《解决问题的策略——假设》中的鸡兔同笼问题,利用编程来求解鸡和兔的数量;等等。
游戏化是使用游戏机制和游戏化体验设计,数字化地鼓励和激励人们实现自己的目标。游戏化教学策略主要有两种形式,第一种是将计算思维的内容理念等融入游戏,利用小学生天生爱玩游戏的特质,把所要讲授的知识点融入游戏关卡,学生掌握了相关知识即可过关。大量有趣的关卡,让学生对语言的应用有一个比较直观的认识。第二种是从学生常玩的经典小游戏入手,例如打地鼠、飞机大战、贪吃蛇、植物大战僵尸等等,把知识点融入游戏设计,将学生从游戏玩家转变为游戏设计者,让学生在游戏设计过程中提升计算思维。
以项目(问题)为导向的教学方法(problem based learning,PBL)包含提出问题、规划方案、解决问题、评价和反思五个关键环节。在课堂上,教师引导学生思考如何根据实际问题,完成程序的编写,鼓励学生用不同的方法表达自己的观念,与其他同学进行交流合作;同时,教师作为监督者,控制学生讨论的范围及时间,防止学生偏离主题。学生在交流过程中发现别人作品的闪光点,与他人发生思维碰撞,再继续完善自己的作品,让作品呈现出更多创意,从而培养他们团队合作和创新思考的能力。学生在不断调试程序、寻找和解决bug的过程中,也提升了发现问题、解决问题、反思问题的能力,在此基础上逐步地培养出计算思维。
思维导图和流程图是编程教学中普遍使用的可视化编程工具。在学习编程的过程中,学生根据教师设计的情境,思考解决问题的方案;教师利用流程图将思考的过程记录下来,并理顺逻辑关系,学生基于流程图完成基础编程。这是教师通过思维导图引导学生发散思维,让学生在已完成的作品上进行改编,对作品进行创新创造活动。可视化技术对计算思维培养方式基本遵循了“隐性思维显性化—显性思维工具化—高效思维自动化”的规律。
学生在组内展示并讲解作品,听取教师和其他同学的建议,得到反馈后继续改进作品,以小组为单位进行成果的展示和交流。教师通过观察记录,从小组分工合理性、合作机制的完善、交互协作的深度、成员参与的积极性等方面进行考量。
通过一学年的学习,教师结合学校要求的校本课程考级制度,对学生个人的自主学习能力和知识技能水平进行客观的评价。以此激励学生在巩固课堂知识的基础上,通过自我学习和自我提升来挑战自我,从而学到更多的知识技能,取得更高的荣誉等级。
我们组织学生参加教育主管部门以及社会团体每年定期举办的相应的比赛,学生参加比赛,可以了解学习效果,还可以获得奖励证书,对未来的继续学习益处良多。
我们通过对编程校本课程体系、课程教学策略和评价方式等方面的梳理发现,学习编程不仅有利于学生对学科知识的理解提高,更有利于培养学生的计算思维。未来社会是人类与机器高度融合共存的社会,懂得机器语言和运行模式的人,将占得先机。因此,编程教育是新时代基础教育的必修课,也是保障青少年未来成功的基石。校本课程的开发与实施是一个开放动态的过程,越来越多的学校在开设校本课程,编程校本课程体系化可使后来者站在已有课程的基础上创新提升,不仅能避免教师的重复劳动,也有助于课程质量的保障和提升。