许晓璐
新课改强调发展学科核心素养,其中发展计算思维是当前k-12阶段教育的重中之重。但如何能够有效捕捉学习者的思维活动过程,了解学习者计算思维的发展动态,提升其计算思维素养,是本文研究的重点。因此,本文引入计算思维可视化表征方法,借助程序流程图这一可视化思维工具,结合计算思维的四个要素,探索小学阶段有效提升学习者计算思维的编程教学方法。
2022年4月,教育部发布的《义务教育信息科技课程标准(2022年版)》文件,反映了数字时代下学科素养的重要性。课标中对“计算思维”的素养内涵阐述为:计算思维是指个体运用计算机科学领域的思想方法,在问题解决过程中涉及的抽象、分解、建模、算法设计等思维活动,具备计算思维的学习者,能对问题进行抽象、分解、建模,并通过设计算法形成解决方案;能尝试模拟、仿真、验证解决问题的过程,反思、优化解决问题的方案,并将其迁移运用于解决其他问题。计算思维属于建构性思维,但在学习者学习编程的过程中,其思维方式及思维加工过程很难被教师所了解,尤其在问题的识别与分解,对问题进行抽象建模,以及算法设计实现方案这四个要素中。目前评估学习者计算思维发展水平的方法中,基本以评估学习者制作的编程项目为主。但只是以学习者制作的编程项目来评价其计算思维的发展水平,很显然是一种轻过程重结果的做法,不利于学习者计算思维的培育。
从众多文献的研究中可以发现,目前关于计算思维的研究,多集中于对计算思维的概念、内涵与课程开发设计的研究。从工程设计的角度出发,目前的研究阶段,更多集中在编程项目的方案实现上。我们在编程教学课堂中常常可以看到,教师设计的教学环节上,在学生理解、识别情境问题后便跳跃到脚本编写的环节,中间缺少了对问题的抽象、分解、建模的过程,学生也就缺乏了将问题从现实转变为抽象的能力。另外,在当前小学阶段的编程教学论文中,有关计算思维培养策略的实践研究并不少,但真正关注学习者的计算思维过程并不多,这显然不利于计算思维的培养。由此可见,我们必须找到一种能够监测学习者思维活动过程的工具,以此记录他们的思维加工过程。因此,笔者在编程教学中,选择了作为计算思维加工过程的可视化承载工具——程序流程图,通过指导学习者绘制程序流程图,先对问题进行识别,再将问题分解并抽象化表示,最后寻求合理的算法优化途径,直至方案实现。学习者于整个教学过程中,在程序流程图的辅助下,学会运用计算机科学领域的思想方法,一步一步从分析问题到解决问题,最后实现项目程序的编制,达成计算思维之发展。
一、现阶段编程教学中存在的问题
(一)教师教学理念传统,轻思维能力培养
当前教师的教学目标更多聚焦在编程知识与编程技能的掌握,而忽略在编程学习中,学习者计算思维的现有水平和发展情况。简单地说,教师的教学理念依然比较传统,重知识技能训练,轻能力思维培养。比如,课堂上教师使用频次最多的任务驱动法,教师更多地是代替学习者把学习任务划分好,学习者只要在老师的指引下,按部就班地完成学习任务即可完成一个编程项目。这样传统的教学模式下,学习者能掌握编程知识,但是这些零碎的知识得不到建构统整。学习者失去了主动去分析问题、解决问题的机会,这在很大程度上阻碍了其计算思维的发展。学习者头脑中能否梳理出程序内含的逻辑关系?是否能够将复杂的问题分解成若干个较简单的学习任务,逐个击破从而突破难点?这些都是当前小学信息技术教师比较欠缺考虑的。
(二)学习者学习方式落后,被动学习
在编程课堂中,我们经常看到这样的课堂现象——学习者通过观看学习视频或教师演示,完成一个个学习任务,最后完成整个编程项目的制作。而在这样的学习中,学习者有时候会出现忘记下一步要解决什么问题的困惑,说明学习者缺少对问题的统整认知,没有理解程序内在的逻辑关系,只是在视频或他人的示范下搭建积木脚本,知其然而不知其所以然。可见,在整个学习过程中,学习者缺失了以计算的视角和方法参与问题解决的全过程,而这个过程正是计算思维的发展过程,它涉及思维加工过程在问题的识别与理解、问题的分解与重构、方案的设计与实施等多个环节的综合发展。由此可见,传统的被动学习方式正在阻碍学习者计算思维的养成。
二、流程图“捕捉”计算思维的实践研究
对学习者计算思维素养的培育是否有效,极大程度上取决于教师能否真正理解计算思维的内涵。那么,计算思维的要素有哪些?如何运用程序流程图将隐含的计算思维要素表达出来呢?
由图1可看出,计算思维的四大要素分别是:问题识别、问题分解、抽象与问题解决。其中“问题解决”要素包含了算法与逻辑两个方面。计算思维是学习者在项目学习中不断建构出来的思维,从问题的分析环节(包含问题识别、问题分解、抽象)到问题的解决环节(算法与逻辑),每一个环节、每一个要素都可以通过程序流程图呈现出来。下面笔者将结合案例《猜数游戏》进行具体的分析阐述。
《猜数游戏》项目过程说明:
用户输入所猜的数,当计算机提示所猜的数比答案大,用户再输入一个比上一次小的数;反之,则输入一个比上一次大的数,直到猜中答案(1到10之间的随机数),游戏结束。
(一)项目中的问题识别与问题分解
在绘制该项目流程图之前,学习者需要先掌握程序流程图各类符号的含义与使用方法,流程线的连接以及简单的文字表述,這直接关系到学习者能否对问题进行正确的界定。程序流程图的图形符号一共分为五类:
1. 起止框:外观形状是圆角矩形,表示程序的开始或结束。
2. 输入/输出框:外观形状是平行四边形,表示数据输入或输出的结果。
3. 处理框:外观形状是矩形,表示程序中的一般过程。
4. 判断框:外观形状是菱形,表示程序中的条件选择。
5. 流程线:外观形状是单向箭头指向,它是以上四类图形符号之间的连线,箭头方向表示工作流程。
在本项目的学习中,学习者首先从“猜数游戏”的情境中识别出计算机生成的随机数是一个不确定的数,用处理框来表示这个随机数。用户输入的数用输入框来表示,它也是不确定的数。该游戏的机制就是比较这两个数字的大小关系,如果用户第一次没有猜中,程序出现相应的提示语“大了”或“小了”,用户再次输入,以此循环直到猜中。如果用户第一次便猜中,提示“恭喜你,猜中啦!”,游戏结束。程序的整个过程中涉及两数大小关系的判断,需要使用判断框表示。过程中的提示语用处理框表示即可。在选择流程图的图形符号过程中,学习者已经完成了对问题的界定。通过对游戏机制的分析梳理,最后使用流程线连接各个图形符号,完成流程图的绘制,将一个大问题分解成不同部分的小问题,流程图的呈现十分直观。
(二)抽象建模
情境中用户往往不可能第一次便猜中,那么如何表示用户反复猜测这一过程?关于两数的大小关系一共有几种结果?不同的条件判断关系如何体现?为了让学习者能够顺利地进一步将现实的情境要素转变为抽象,教师要适时地引导学习者将其抽象为流程图中的基本结构,懂得使用顺序、选择、循环的结构来建构它们之间的关系,从而建立起同类型问题的抽象化模型。比如,用户反复猜测涉及基本结构中的重复循环,那么要启发学生观察流程图的流程走向,思考猜错之后,流程应该走到哪个步骤,用户才可以继续猜测?学生很快便能发现,只要在用户猜错提示之后,将流程线往上画,回到“用户输入数字”的步骤,就可以表示重复执行。再看情境中两个数的大小关系一共有3种:a=b或a>b或a
(三)问题解决(算法与逻辑)
同一个问题可以由不同的算法来解决,但是多种算法中,总是存在相对优质的算法。比如能够利用三种基本结构,尽可能减少运算的步骤,便是比较好的算法。到这个环节为止,学习者已经能够较完整地绘制出整个项目的程序流程图。教师可从中观察出他们的算法优劣之分。算法思维是计算思维中非常重要的一部分,因此教师很有必要积极地引导学习者不断反思流程图解决问题的思路,找出问题所在,从而优化流程图的设计,寻求最佳的解决方案。经过这一阶段优化后的流程图,能够为后续的方案实现提供更大的指导价值。
总而言之,在小学编程教学中,借助程序流程图来“捕捉”学生的思维,具有一定的指导意义。学习者在问题的各个环节绘制流程图,教师便可直观地了解学习者的计算思维发展水平,针对不同环节与不同的计算思维要素,对学习者进行针对性地指导。另外,教师注重引导学习者对存在问题进行反思,修改流程图,寻求最合理的算法來实现方案,完成项目程序的编制,能够进一步促进他们计算思维的发展。而对学习者而言,绘制程序流程图可以帮助他们分解问题,梳理编程的思路,理清程序中各部分之间的逻辑关系,将问题逐个击破,最终完成一个完整项目的程序编写,发展计算思维的同时,提升学习的深度。