例谈中小学图形化编程教育中计算思维的培养
2022-05-30李强张超
李强 张超
[摘 要]计算思维素养的提出,为整个中小学信息技术课程构建了一个自己的灵魂。义务教育阶段的信息技术课程也应围绕高中阶段新课标提出的计算思维这一学科核心素养重新构建。为此,义务教育阶段的教师和教材都要做出适当改变。教师要深入理解计算机科学领域中一些重要的思想和方法,包括在解决问题的各个环节进行形式化思考,将解决方案算法化,通过解决问题的过程形成可迁移的经验等,这也是计算思维素养下图形化编程教育的基础。
[关键词]计算思维;中小学;信息技术;图形化编程;学科核心素养
“计算思维”已被列为高中信息技术课程的核心素养,未来也必将成为义务教育阶段信息技术课程的核心,相应教材也应有所变化。因此,2018年底,河北省教科所(现河北省教科院)开始组织对河北人民版义务教育阶段《信息技术》教材进行修订。其中,推动图形化编程进教材以及尝试通过图形化编程落实计算思维的培养是本次修订的重要内容。2021年9月,修订后的教材投入使用,其后继教研工作是一个对计算思维素养以及图形化编程教育不断认识、理解和总结的过程。在此,就一些思考和实践所得进行整理和分享。
《普通高中信息技术课程标准(2017年版2020年修订)》(以下简称新课标)提出:“计算思维是指个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。具备计算思维的学生,在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据;通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案;总结利用计算机解决问题的过程与方法,并迁移到与之相关的其他问题解决中。”[1]在此,将结合众多研究成果从不同角度提出的对计算思维的理解,联系教学实践,对其中一些重要概念进行阐释,以使其更明确具体。
一、计算机科学领域的思想方法
这里的思想方法指的是在计算机科学领域中被鲜明体现、对解决问题至关重要且具有普遍迁移意义的方法概念。例如,周以真教授提出的计算思维的18个基础概念:约简、嵌入、转化、仿真、递归、并行、抽象、分解、建模、预防、恢复、冗余、容错、纠错、启发式推理、规划、学习、调度等。[2]又如,美国计算机科学教师协会发布的《CSTA K-12 计算机科学课程标准(2017年修订版)》中分别从计算机系统、网络和互联网、数据与分析、算法与编程、计算机的影响5个方面提出了设备、硬件和软件、故障排除、网络通信与组织、信息安全、数据的收集、数据的存储、数据的可视化与转化、推理与模型、算法、变量、控制、模块化、程序开发、计算机文化、基于计算机的交往、计算机涉及的安全法律和道德17个核心概念。[3]新课标在学科核心素养水平划分与描述中涉及的基础概念包括:数据、编码、特征识别、分解、状态机、可行性、抽象、形式化、一般算法(解析、穷举、递归等)、数据结构、模块化、系统化、评估、优化、迭代、迁移等。[4]
“计算机科学领域的思想方法”是整个信息技术教育的灵魂所在。但是,不管是周以真提出的“基础概念”,还是美国计算机科学教师协会提出的“核心概念”,或者我国高中新课标提出的“水平划分与描述”,都是框架性的,且并不完全适合义务教育阶段的信息技术课程。
计算机科学领域是一个包含众多一级学科和二级学科并且还在飞速发展和扩张的庞大的专业学科群,具有高度精细化和专业化的特征。而义务教育阶段的信息技术课程只是一门以建立兴趣、初步实践和增进了解为目的的、普及常识性知识的课程。这就要求信息技术教育既要体现一定的学科特质,防止教学流于肤浅和表面;又要体现普及和实践的特点,防止其演变成专业课程的理论集合或缩小版。
解决问题的过程通常会存在一个或若干个关键环节,这些关键环节体现了解决某一问题最重要的思想,也往往最具普遍迁移的意义。所以,在“计算思维框架”的基础上,计算思维的落实首先要确定一些在学习實践过程中较为核心、较为具体、又具有一定学科特质的关键问题,即兼具典型意义和普遍意义的“元问题”。从义务教育阶段信息技术课程的目的出发,这些“元问题”要能够通过生活实际获得联系和体会,不能过于抽象和窄化。
总体上,解决问题的基本步骤都是相似的,但只了解基本步骤并不足以支持学生解决问题,还需要针对具体问题思考具体的尤其是关键环节的解决方法。以“元问题”为核心构建问题情境和解决方案范例,可以在引导学生解决问题的过程中突出关键思维环节,使课程重点紧紧围绕“解决关键问题”这一核心,保证相关知识和概念的学习都为这个核心服务,并且在解决问题的过程中“自然发生”。
以河北人民版《信息技术》教材(以下简称教材)8年级第13课“电子相册”为例。这是对图形化编程软件KITTEN初步了解后第一次接触一个较为完整的有实际意义的项目。其第1课时的“元问题”是结合流程图了解照片展示的步骤(分支结构),即照片被点击时,如果是小照片,就放大并居中;如果是大照片,就缩小并回到原位置。第2课时的“元问题”是解决照片展示位置的独占问题,即一次只能有一张照片被放大显示在中间位置。第3课时的“元问题”是对电子相册项目进一步优化,即增加自动化水平、增加媒体展示效果和增加项目功能。
以上3个“元问题”都是具体问题,都具有鲜明的计算机领域特质,同时又都可以与生活实际紧密联系,可以应用迁移到其他类似情境甚至信息技术领域以外。
二、采用计算机可以处理的方式
采用计算机可以处理的方式,是要求学生思考的结果要符合计算机处理的形式化要求。对于“界定问题、抽象特征、建立结构模型、合理组织数据”以及形成“问题解决方案”等思考结果的描述,有必要让学生学会借助思维导图、流程图等,进行初步的形式化思考,以便梳理事物属性、步骤、环节或相互关系,进行思想实验和推演及学习交流;初步掌握一种编程语言以便进行更规范的形式化,通过执行结果分析思考的过程环节进行验证,并最终实际形成问题解决的展示成果。
将计算思维与教育实践有效联系起来的关键是思想实验。[5]学生借助思维辅助工具建立初步的形式化描述后,要能根据这些描述进行符合要求的推演,这个过程就是思想实验的过程。在思想实验结果的基础上再对比计算机实际运行结果,可以寻找思考过程中的问题,不断优化,进而学习和理解用到的思想和方法。因为思想实验的两端都可以是外显的,并且思想实验的过程可长可短,不一定局限于编程内容,所以实际上是为计算思维提供了一个不依赖计算机的可量化评价的手段。同时,思想实验不只包含重复,也包含反省(或审视),这在任何教育中都具有积极意义。
将基本方法和思想通过形象化、实例化、实验化的方式在大脑中加以理解和记忆,也是思想实验的一种重要形式,在实际教学内容的组织及教学实践中,都可以加以运用。
以教材第17课“我的贪吃蛇”为例。其第2课时,通过克隆方式实现“一直移动的贪吃蛇(红球组成)的身体为指定长度”,即利用克隆积木实现红球不断增加,然后让克隆出来的红球利用“当作为克隆体积木启动时”积木择机删除自己,两者配合实现运动过程中红球的数量不变。这实际是两个脚本的同步执行问题。教材中首先提出的方案是分别利用“等待~秒”积木来实现同步(见图1)。如果每0.2秒克隆一个,这样每次为首红球移动时,后面第一个球就是刚克隆出来的,第二个球的年龄就是0.2秒,第三个球的年龄就是0.4秒,以此类推。如果设定克隆出来的球每0.4秒就删掉自己,则为首红球后面就不会有超过年龄0.4秒的球,即只有两个克隆红球跟在为首红球后面。
以上是一个较抽象的思考过程,为使学生更深刻地理解,可以让学生通过思想实验在脑海中先推演这一方案的整个过程,理解其原理,然后再让学生用实际脚本测试这一思想,就会发现其中的问题,即在两个脚本中分别使用“等待~秒”积木并没有真正实现同步,其本质问题是计时开始和结束没有使用共同参照基准。尽管这不是最终的方案,但通过思想实验推演和实际脚本测试,对于了解正确的同步机制非常重要。
第二个方案在上一方案的基础上提出使用一个变量作为参照基准来进行同步(见图2)。即只在克隆脚本中进行计时,同时在计时开始前和结束后分别用一个变量进行标注,而克隆出来的球不用计时,只需要知道计时开始和结束了几次即可,这是一个简化的单向“信使”同步机制。尽管确实可以实现问题解决,但如果学生认真思考并推演,还会发现可能存在的问题。这样,在教师的引导下,结合本课最后“巡线小车”项目用到的第三方“信号”同步机制,学生可以进一步掌握同步机制的关键,从而在更多类似情况下知道如何处理。
三、运用合理算法形成解决问题的方案
义务教育阶段的信息技术教学要求回归算法的本质,而非严谨地讨论各种算法的思想或特点。算法是问题解决方案在满足一定规范下的形式化描述。算法描述的问题解决方案包括步骤分离(细分)、机械执行(自动化)和路径确定(无歧义)等。因此,对学生而言,算法的思维方式需要有一个逐步接受、建立和发展的过程。具体而言,在义务教育阶段,学生首先需要理解和熟悉的是算法思维方式的特点,然后才是初步掌握在较为直观具体的情形下建立有效和正确算法的方法,形成一定的算法思维水平。
学生在学习利用合理算法形成问题解决方案时,会经历三个相互交叉的发展阶段:一是可以一般形式(非算法形式)进行思考并提出问题解决方案;二是可将一般形式下的思考过程和问题解决方案向算法形式转化;三是可直接利用算法知识进行思考并直接提出算法形式的问题解决方案。第一阶段中的能力取决于学生在问题涉及领域的知识掌握程度,第三阶段中的能力已经需要学生具备较为深入的算法知识、思维能力和熟练程度,所以义务教育阶段学生对算法的学习重点应该是解决第二阶段的能力问题。基于这一认识,模仿思想恰好非常符合要求,即按照现成的样子或者步骤环节去形成算法形式的解决方案。
以教材第14课“让我们一起打地鼠”为例,这是教材的图形化编程学习中接触的第一个较为完整的游戏作品。学生普遍对这个游戏有一定了解。其第2课时,通过鼠标单击实现模仿开枪效果。首先要做的是在脑海中将开枪的效果具体化,进而找到开枪效果的特征:火光、枪声。然后寻找与之对应的知识和技术,火光可以用角色“圆形爆炸”的造型轮换模仿,声音可以用播放声音片段“炸弹爆炸”模仿(见图3)。
接下来,在模仿地鼠被击中的反应时,开始的需求是“地鼠变成被击中的樣子”,技术上使用适合的造型替换当前造型即可,但因为角色库中没有现成造型,自己制作的难度又较大,所以可以换个思路,直接用对话代替。如果角色被击中中心点位置附近(可设定),就发出对话“啊!”,如果角色被击中位置偏离中心点较远,则发出对话“差一点”。这样就与需求的预期达成了一致。
模仿思想很“原始”,但其运用并非轻而易举。让学生实际运用模仿思想解决问题,依然可能存在困难。
在以KITTEN为代表的图形化编程平台中,项目的完成是作品的具体化过程。这个过程包括对作品具体特征的确定和对脚本的思考两个互相交织的核心环节。当面对一个待完成的作品时,学生首先要做的是分析作品需求,进行需求的具体化,再抽象化。同时,学生还要针对作品需求思考具体的知识和技术诀窍,并对它们所能实现的效果进行抽象化。将需求的抽象化和技术的抽象化达成一致,最后完成作品的具体化。总体上,这一过程就是“具体—抽象—具体”的过程,关键是洞察两个环节思考时抽象特征的相似性,只有充分具体化,然后充分抽象化,才会达成需求与技术在抽象化特征上的一致,即达成问题的解决[6]。
以教材第15课“二进制转换小能手”为例。其第2课时,利用字符串操作实现非负整数范围内十进制到二进制的转换。教材中给出的基本过程是“除2取余,逆序排列”,按照这个过程编写脚本即可完成转换目的。但是学生因为对于二进制了解不深入,也不熟悉,进而对于“除2取余,逆序排列”的方法本身可能存在理解上的障碍,存在照猫画虎的情况,需要进一步具体化。
如果进一步理解,十进制到二进制的转换可以看作一个十进制数逐渐向二进制左侧相邻较高数位不断归并的过程。例如,一个十进制数17可以理解为17个1,可以归并为8个2和1个1,然后可以归并为4个4、0个2和1个1,依次类推,最后可以得到1个16、0个8、0个4、0个2和1个1,即得到二进制数10001。总结这个过程,可以将每次归并抽象为对偶数的判断过程,即每次归并后的结果如果是偶数就留下1个0;如果不是偶数,就留下1个1,然后继续归并,直到归并后的数为0,归并过程结束。让学生通过模仿归并的过程实现算法,可以更好地理解二进制,然后再去思考“除2取余,逆序排列”,也可以加深理解。
四、总结利用计算机解决问题的过程与方法
这里需要特别强调的是那些对计算机解决问题的过程具有普遍指导意义的关键思想。对于计算机解决问题的一般过程,已有比较成熟的研究。例如,2011年,美国国际教育技术协会与计算机科学教师协会联合提出了计算思维的操作性定义,将运用计算思维进行问题解决的过程进行了表述。[7]此定义将计算思维界定为问题解决的过程,并提出了六个要素,即明确问题(形成一个能够用计算机工具解决的问题)、分析数据(在明确问题的基础上逻辑化组织和分析数据)、抽象(使用模型和仿真对数据进行抽象表示)、设计算法(通过算法设计实现自动化解决方案)、评估方案(以优化整合步骤、资源为目标,分析和实施方案)、迁移解决方法(将解决方案进行总结,迁移到其他问题的解决中)。[8][9]新课标中也对利用计算机解决问题的过程进行了类似的描述。
在解决问题的过程中,分解和化归的思想对于确定解决问题的方向有重要意义,是两种解决问题的基本策略,同时也可用于知识和技能的构建。
分解的思想就是将一个较为复杂难以整体理解和解决的问题或者过程分解为若干个足够简单明了的子问题或者步骤。分解是计算思维的特征之一。[10]将计算机解决问题的一般过程分为几个环节本身就是分解思想的体现。分解思想还可以体现到计算机解决问题的每个环节。在界定问题过程中,可以利用分解思想化整体为局部,便于“各个击破”;在抽象和构建模型的过程中,可以利用分解思想对各个功能进行分离,进而实现单一功能化和模块化;在设计算法的过程中,算法的“步骤分离”特点就包含了分解思想,分治、递归等算法思想的本质也都是分解思想。
以教材第16课“贪吃蛇与图形绘制”为例。本课的主要目的是利用画笔工具在舞台内绘制贪吃蛇游戏的网格和边界线。其第1课时主要了解画笔工具的使用。作为整个贪吃蛇游戏项目的开始,在介绍画笔之前,先对贪吃蛇游戏进行了功能分解:一是开始时网格图及边界的绘制;二是“贪吃蛇”在网格中的移动和方向控制;三是“食物”位置的变化;四是“贪吃蛇”吃“食物”后变长;五是判断游戏结束。[11]
对于画笔工具的使用,类比真实情景中用笔画线的步骤,将画笔绘制的过程分解为三个基本步骤:一是在开始位置落笔,二是从开始位置到结束位置移动一段距离,三是在结束位置抬笔。
本课时分别举例说明了直线的绘制、彩虹线的绘制、圆弧的绘制和彩虹的绘制,但总体上是在熟悉画笔绘制的基本步骤,从而为第2课时做准备。而第2课时主要是利用画笔工具绘制贪吃蛇游戏的网格和边界线。
首先可以将绘制分解为两个部分,即网格的绘制和边界线的绘制。网格的绘制可以分解为竖线的绘制和横线的绘制。在分别实现了22条竖线和22条横线的绘制后,学生自然会发现两个绘制过程可以合并在一个循环结构中。而这时再看边界线的绘制,就是最低难度的网格绘制。本课分解的运用可以让学生明显感觉到思路更加清晰并且思考难度降低,同时获得了一种构建秩序的体验。
化归的思想就是将复杂问题向简单问题转化,将陌生问题向熟悉问题转化,将未知问题向已知问题转化。总之,就是将不能解决的问题转化为能解决的问题。化归的本质是尽可能地利用已有经验解决新问题。这需要先存有模式经验,在遇到待解决问题时,可将其分解为能与模式经验匹配的旧部分和无法匹配的新部分,这样就将关注点从解决整个问题转化为解决其中新的那一部分。这一过程会遇到两种情况:一是问题中的新部分还可以匹配模式经验,这就是已有经验的深化;二是新部分的问题不能转化为模式经验,这就是新经验了。
以教材第15课“二进制转换小能手”为例。其第3课时主要是利用函数实现任意两个二进制数的加法运算。在KITTEN中没有二进制数的数据类型,所以二进制数加法没有现成的运算积木支持。尽管其原理和笔算过程都很简单,但如果像本课第1课时和第2课时那样也利用字符串对二进制运算进行模拟,即可发现其过程相对繁琐。如果只是想求两个二进制数的和,那么利用化归的思想,完全可以将二进制数转换成十进制数,从而将二进制数加法转化为十进制数加法,这样在加法环节就可以直接利用已有的运算积木,再将十进制结果转化为二进制数即可。在这个思路中,二进制数和十进制数的相互转化正是第1课时和第2课时学到的内容,只需要利用函数积木将相关脚本封装起来即可直接利用。这一过程不仅可以帮助学生练习函数的使用,还可以培养学生化归的意识。
參考文献
[1][4]中华人民共和国教育部. 普通高中信息技术课程标准 (2017年版2020年修订)[S].北京: 人民教育出版社,2020:6,68.
[2]唐培合,秦福利,唐新来.论计算思维及其教育[M]北京:科学技术文献出版社,2018.
[3]王学男,林众.美国《CSTA K-12 计算机科学课程标准(2017年修订版)》的解读与启示[J].课程·教材·教法,2021(4):138-143.
[5]王荣良.中小学计算思维教育实践[M].上海:上海科技教育出版社,2019: 160.
[6][日]细谷功.高维度思考法[M].程亮,译.北京:中国华侨出版社,2018.
[7][8]陈鹏,黄荣怀,梁跃,张进宝. 如何培养计算思维——基于2006-2016年研究文献及最新国际会议论文[J].现代远程教育研究,2018(1):98-112.
[9][10]任友群,隋丰蔚,李锋. 数字土著何以可能——也谈计算思维进入中小学信息技术教育的必要性和可能性[J].中国电化教育,2016(1):2-8.
[11]河北省教育科学研究所.信息技术(八年级)[M].石家庄:河北人民出版社,2021:117.
(责任编辑 郭向和 校对 姚力宁)