随着有关计算思维培养理论与实践的不断深入, 单纯由“信息素养”观念所主导的信息技术教育越来越不适应当前国内的中小学信息技术教育。重视计算思维培养的发展趋势, 让学生全面理解在信息时代的生活环境, 并利用所学到的技术, 利用学科思维的方式去解决生活中碰到的实际问题。编程教育作为学校校本课程的内容, 可以很好地补充当前中小学信息技术课程的不足, 满足不同学生的兴趣需求。在编程的过程中, 掌握一些算法的知识, 扩大学生的视野, 增强问题解决能力, 给学生带来快乐、减轻压力, 使学生在繁重的学习中得到放松。
根据当前信息技术教育学术界主流的思想以及国内外形势的分析, 我们认为, 编程教育对学生在计算思维的培养方面有着得天独厚的优势, 有助于培养学生的问题分析能力和问题解决能力。《上海市中小学拓展型课程指导纲要》指出, 拓展课程的科目方案的编制, 应充分考虑各年级学生的认知基础、兴趣特点等要素, 以提升学生对科目的关注程度与投入程度。由此可见, 在中小学开发编程教育校本课程是非常有必要的。
编程教育校本课程开发的策略和方法
编程教育校本课程开发, 除遵守基本的校本课程开发要素外, 也要有一定的策略和方法。
1.以项目引领, 注重问题分析、解决
通过编程教育发展和培养学生的计算思维, 我们需要改变以往学习编程语言的方法。很多计算机专业的学生都学习过计算机编程语言, 但是却不能写出一个完整的程序。原因在于, 其学习过程中, 只是学习表达式、循环、条件判断等命令行, 最终只能学到该编程语言的语法结构, 而不能应用于现实问题的解决。周以真指出, 计算思维培养的关键是“抽象”和“自动化”, 不孤立地教编程, 一开始就让学生把抽象和实现“自动化”的编程结合起来, 这也是我们开发校本教材的总原则。编程只是实现问题“自动化”解决的一个部分, 学生通过了解项目中提出的问题和需要解决的问题, 一开始就把解决问题的思路与解决实际问题结合起来。在解决问题的过程中, 分析问题、规划制定解决方案, 并引导学生用批判性思维来衡量方案的可行性, 然后再着手实现。
编程教育校本教材, 在如何选择项目上, 需要遵循一定的方法。
(1) 项目主题选择从身边实际问题出发。为培养学生解决实际问题的能力, 项目主题要选择接近生活、能切身感受到的主题, 这样容易引起学生的共鸣。如日常生活中常碰到平均数的问题, 计算商品的平均价格、平均成绩等, 让学生考虑如何用计算机科学的思维去解决相应的问题, 通过学生对问题的分析和实践操作, 推动到相似问题的一般性解决方案中去。
(2) 项目主题选择的趣味性。编程教育校本教材项目选择的主题还应该考虑到学生的年龄特点和认知程度, 项目主题的趣味性直接影响项目开展和学生实践的效果。选择学生感兴趣、容易理解的项目, 可以促进学生对问题的深入思考, 并触动其对问题的分析。
2.以Scratch为载体, 降低编程准入门槛
编程教育的开展需要依托一门程序语言。继LOGO语言之后, 美国麻省理工学院多媒体实验室推出了一种新的程序式语言——Scratch。这是一种类似于搭积木的可视化程序编写方式, 一经推出, 就受到了广大初学者的青睐。
(1) 可视化编程。相比之前在中小学学生中推行的LOGO、Basic语言, 其最大的优势是不需要学生记忆命令行, 使用者可以不认识英文单词, 也可以不会使用键盘。其构成程序的命令和参数通过积木形状的模块来实现, 用鼠标拖动模块到程序编辑栏就可以轻松实现程序编写。熟悉程序开发的人都知道, 不同的程序语言只是实现的语法命令不同, 在问题解决的思路上是一致的, 只是解决问题所编写的代码不同而已。培养学生的计算思维, 注重的是培养学生的解决问题的思路, 与编写代码的语法没有太大的关系。Scratch正是这样一款可视化的, 忽略命令行代码的编程软件, 不需要学生去记忆枯燥乏味的命令行, 为学生最终实现编程大大降低了门槛。
(2) 积木模块类型丰富。Scratch作为一门编程语言, 提供了与其他编程语言一样的语法模块, 积木模块共分8类, 100多种功能。通过模块分类呈现的方式, 学生只需要选择合适的模块, 将其拖曳到程序的编辑栏, 即可使用。
(3) 支持的硬件越来越多。随着Scratch编程软件被广大使用者不断青睐, 与其对接的外部硬件设备也越来越多, 如Make Block、Labplus、树莓派等产品。这些产品都结合了硬件传感器, 使编程的内容不仅仅局限于电脑屏幕, 而是可以通过编程控制外部设备, 拓展了Scratch的可编程应用空间。
3.以STEAM为课程框架, 拓展学生视野
STEAM (科学、技术、工程、艺术、数学) 教育五个学科跨界结合, 打破常规了学科界限。在编写编程教育校本课程时, 我们也考虑把这些领域的项目有序地放到一起, 以此让学生有机会接触各个领域的问题、知识, 激发其兴趣爱好。STEAM教育注重与现实世界的联系, 注重学生的学习过程。它让学生们自己动手完成他们感兴趣的并且和他们生活相关的项目, 从过程中学习各种学科以及跨学科的知识。
选择与STEAM教育相关领域的项目, 并且与现实生活结合, 我们在开发教材的过程中, 设计了如表1的课程目录。
选择这些项目的同时, 还需要考虑以下几个方面的内容。
(1) 程序设计相关知识点的合理分布。作为编程教育的校本教材, 选择Scratch编程语言为载体, 需要考虑针对Scratch8大模块知识点的合理分布, 学生通过系列项目的实践, 熟练掌握基于Scratch的基本程序设计。对于初学程序设计的学生而言, 控制、侦测、数字和逻辑运算以及变量四大模块中一些基本功能有一定的难度, 学生只有在不断的实践中慢慢体会与提高。对于一些相似的功能, 如动作、外观中的大部分功能, 学生使用一次后, 就可以基本理解。针对这些功能, 可设计在教材的练习部分, 鼓励学生进行创造性的使用, 而无须覆盖在教材的主题部分。
(2) 项目跨学科特性、拓展性。校本教材虽然基于STEAM教育的五种类型进行了项目的划分, 但是每个项目内部还存在着跨学科的知识。有些知识学生可能没有接触过, 就需要在项目中进行必要的知识拓展, 以帮助学生理解项目阐述的问题或者帮助学生解决碰到的实际问题。如针对三年级学生而言, 还没有接触过坐标的概念, 要把角色移动到某个坐标位置, 就需要把坐标的概念阐述清楚, 便于学生理解计算机屏幕是由无数个点组成的, 每个点都有横、竖两个维度的值, 以确定点的位置, 我们称之为点在屏幕上的坐标。角色所在的位置, 其实就是屏幕上的某个点的位置, 也是一个坐标……通过类似的知识拓展, 学生可以了解更多跨学科的知识。
4.以学生认知规律为基础, 遵循编程学习的一般规律
对于学生而言, 学习计算机编程有利于发展抽象思维, 有利于学会一种新的解决问题的技能, 从而能自觉将之应用到未来的日常生活、学习和工作中去。学生在学习编程的时候, 由于其年龄特征、知识结构和生活经验的限制, 在分析问题和解决问题的过程中还需要不断的引导。
(1) 在内容的编排上, 遵循由浅入深的规律。编程教育培养的解决问题的方式, 自然是通过程序设计解决某些实际问题。在此之前, 作为校本教材, 也需要做好程序设计的相关铺垫工作。如在项目的先后顺序编排上, 需要考虑程序设计所需知识的循序渐进。在教材的前面部分所安排的项目, 程序实现不能过于复杂, 可用一些情景影片、知识介绍性的项目, 如太空探险、生态园等, 学生制作一个以介绍为主的程序, 或制作一段情景动画, 在培养学生兴趣的同时, 实践程序设计的相关模块功能的应用方法。接下来, 可引入控制类模块的功能, 如条件判断、循环等, 学生在了解计算机强大的运算能力及规范的运行流程的情况下去运用这些控制类功能。学生可以体会到在什么情况下需要用到循环, 在什么情况下需要进行条件的判断, 通过项目的不断实践, 慢慢体会。最后, 再上升到程序功能的综合应用, 如开发一些小游戏, 对游戏中的角色、变量、状态加以控制等。
(2) 编程教育解决问题的标准化流程。编程教育还关注一个重要的问题:学生学会从碰到问题到解决问题的标准化处理流程以及养成良好的编程习惯, 即解决问题的习惯。有过程序开发经验的人都知道, 要开发一个应用通常要经过需求设计、详细设计、代码编写、调试、发布这样的基本流程。在中小学实施编程教育, 我们不是以培养程序员作为目标, 但学生需要清晰地了解解决问题的一般过程。我们需要引导学生对问题进行认识和分析、探讨问题的关键之处、选择性地使用合适的方法并对解决过程的关键步骤进行深入的探讨。如问题考虑是否存在缺陷, 是否还有其他可能存在的情况发生等, 不断地提出质疑, 通过不断地思考和分析问题规划程序开发的流程, 最后上机进行实践。
编程教育校本课程开发与实践的注意事项
01
课程开发的注意事项
校本课程要依据课程目标和国家课程理念进行课程开发, 应该体现课程的系统性。在开发编程教育校本课程的过程中, 还有以下几个注意事项。
(1) 课程内容选择要有广度。所谓广度是指在课程开发的过程中, 不但考虑基础性的知识, 而且需要考虑内容的新颖性和实时性, 能使学生在学习课程的过程中接触较新的技术, 了解当前最新的技术发展, 开拓眼界, 为激发其创造能力提供基础。如需要考虑融入外部硬件的控制编程, 尤其在中高年级。编写与外部设备交互的程序, 能激发学生的兴趣, 同时培养其动手实践能力, 消除技术的神秘感。
(2) 课程内容实施要有梯度。所谓梯度是指课程内容的选择要适合不同年龄学生的不同需求。如低年级学生宜选择一些以动画设计为主的内容, 在学习编程工具和编程知识的同时培养兴趣;中高年级的内容则偏向于算法思维和问题解决能力的培养。
(3) 课程内容呈现要有智度。作为中小学信息技术课程的补充教材, 要规避编程纯技术的内容呈现方式, 如为了让学生能自己编写程序, 把程序中的表达式、循环和条件判断语句先进行教授。在问题解决的过程中, 用到一个教授一个, 让学生体会程序语法的实际用法和作用。中小学编程校本课程是为了培养学生的计算思维, 在教材编写过程中, 要体现问题解决的过程, 通过一些提示性的语言激发学生的思维, 或引导其对问题进行思考和分析, 或激发其创造性思维进行程序的拓展和延伸。
02
课程实施的注意事项
(1) 鼓励学生进行创作。创作的过程同样是反复实践的过程, 把课内的知识迁移到其他问题的解决中去。在编程教育中, 学生通过自身的努力每完成一个项目, 定会收获编程教育带来的喜悦。在教材的编写过程中, 每个项目的课后练习部分, 可鼓励学生在项目的学习基础上, 创作属于个人的作品, 激发其创造性思维。
(2) 鼓励学生进行作品的改编。教材中的实例可以帮助学生理解如何用计算机科学来解决一些实际问题, 在此基础上学生更容易收获成果。在编程教学的过程中, 可以鼓励学生对实例作品进行修改或改编, 学生对程序的改编, 有助于学生对问题再次进行深入的思考, 融入个人的想法。学生在思考的过程中有助于激发创造性思维, 在不断调试的过程中发展逻辑思维能力。
(3) 注重作品的分享。激发学生创作兴趣的另一种措施是提供学生展示个人作品、小组作品的舞台, 延伸学习活动的时间和空间。学生通过展示、交流, 相互借鉴、共同提高。在分享的过程中碰撞出思想的火花, 激发创作的灵感。