计算思维对一个Scratch教学案例的启示
2016-05-14谢晓孟延豹
谢晓 孟延豹
前言:
转眼,“教学APP的学科运用”这个栏目设置已快一年了,虽然因被编辑们催稿而四处找人访谈,彻夜无眠,凑了那么几篇文章,但现在反观栏目,却发现自己也有了随着中国教育信息化发展的一点点痕迹。
最初,笔者的目光基本落在学科中能够应用什么样的APP;这些APP能够替代以往教学过程中的哪些工具,带来什么样的提升,教师们如何应用这样的APP,这样的应用能够给学科教学带来什么样的价值等问题上。
后来,笔者开始怀疑寻找替代品或功能效率提升点的方法,是不是应用教学APP融合教学应用最好的方法,也许我们的出发点就是有问题的。因此,笔者开始从课程建设角度出发,考察课程平台类APP在各种应用场景中的应用特性、策略以及方法。
在经过了一系列的实验后,笔者认为从某些方面验证了一个假定,那就是如果要解决教学APP与学科教学深度融合的问题,必须是在信息技术条件的视角下,从课程建设的角度出发,重构课程结构,重组课程流程,重新定义教学的各种场景。并在重新设计的过程中,在适当的环节中应用适当的教学APP,这样才能做到真正的深度融合。
而看到谢晓老师的这篇文章后,笔者却发现,还是忽视了一个非常重要的问题,那就是,在考虑利用教学APP进行学科教学的时候,要有一个非常核心的关注点,即如何完成学科核心价值,以及对学生学科核心素养的培养。
本文中,谢晓老师从计算思维角度出发,充分阐释了建设一门新型信息技术课程的思考过程。这个思考的过程和结论都是很有价值的,值得我们深思。
从一个Scratch教学案例说起
笔者刚刚接触Scratch时,用了一个下午的时间在官网上走马观花地转了一圈,然后参考案例试编了几个程序。对Scratch的最初印象是没有语法障碍,上手简单。随着对Scratch的深入接触,它的可视化、模块化、界面友好等特性,能有助于一目了然地观察到程序结构,促使笔者的注意力从程序转移到自己要实现什么上。这令笔者开始反思自己对计算机编程的认识。Scratch的程序模块就像是散落在工作台上的零件,随手可得,但是要用它们搭建出理想的“建筑物”又感觉好像总差了点什么。这种感觉有点像玩魔方,“易于操作”却也“无从下手”。
笔者接触到一个Scratch教学案例——迷宫游戏。这个案例是构建一个迷宫场景,既包括要穿越迷宫的主角,以及和他们狭路相逢的怪物、金币、障碍物等,也包含判定主角的计分和生命值。笔者发觉案例提供的参考脚本(Scratch的程序段叫做脚本)中的主角脚本冗长、重复。这样的程序虽然实现了预期功能,但它是否合乎信息技术课程标准对程序课的信息文化特征的要求呢?是不是解决问题的最佳方案呢?
问题求解过程激发学生学习动力
还记得大学课堂上用C语言求解“七桥问题”时,众人抱怨“为何数学家非要一次不重复地走遍哥尼斯堡的七座桥”的情景,那种不解源于学习材料脱离现实,或者说学习材料中的问题并非由学习者主动提出。随着工作经验和生活阅历的积累,学习者对问题的理解有了更深、更多角度的认识,继而产生的学习感受是不一样的。例如,虽然还是七桥问题,但它是优化方案、减少折损的思路。这样的学习意义在现实生活中具有重要价值,绝对可以把眼前费解难懂的“七桥”变得生动有趣。
在学生求学时期,尤其是具体形象思维向抽象逻辑思维过渡的阶段,抽象命题让学生感到有难度又烦恼。不论教师如何用外在形象包装这些命题,都不如由学生自身产生的直接动机所带来的动力强劲。编程相当于在理解抽象知识和解决真实世界具体问题之间搭了一座桥梁,由学生主动思考,应用必要的程序知识设计并创造,这既能探索新知又能解决问题。程序设计没有标准答案,再加之Scratch这类图形化编程语言的包容性,有利于学生构建自己的学习情境,帮助他们提出问题,再由问题探究产生主动的学习动力。
计算思维梳理问题求解的思路
如果以“一次不重复地走遍哥尼斯堡的七座桥”所体现的致简原则来衡量上述案例的参考脚本,它显然不是最佳的解决方案。优化问题解决的方案,不得不提及华罗庚先生撰写的《统筹方法》一文,文中提出统筹方法是用数学的思维方式合理安排工作进程的数学方法。但随着信息技术的发展,计算机应用广泛普及,数学方法的形态也在不断泛化。近年来,统筹方法也被国际上的一个新概念——计算思维所革新。
2006年,美国卡内基·梅隆大学计算机科学系主任周以真教授在美国计算机权威期刊Communications of the ACM上提出计算思维(Computational Thinking)的概念。周教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。
自周教授提出计算思维的概念以来,许多组织和学者都对计算思维的概念进行了深入的研究,其中比较有代表性的是国际教育技术协会(ISTE)联合计算机科学教师协会(CSTA)共同给出的定义:计算思维是一个问题解决的过程,该过程包括制定问题、分析数据、抽象、设计算法、选择最优方案、推广等六大要素。
计算思维在创作Scratch程序“迷宫游戏”中的应用
下面,笔者试切换为计算思维视角,重新思考Scratch“迷宫游戏”的解法。
1.问题是什么
用语言描述“迷宫游戏”通常会这样说:用Scratch设计创作一个程序游戏,玩家可以用键盘方向键操控一个虚拟角色“青蛙”从迷宫入口出发,途中它不能碰到壁垒和机关,否则会有惩罚,碰到宝箱、怪兽会增加或减少游戏得分,最后青蛙亲吻到迷宫出口处的“公主”则过关。
我们再用计算思维概念,判断是否已经把“要解决的问题是什么”描述清楚。计算思维与一般思考方式的根本区别在于:计算思维中探求解决问题的方法是算法的思维。算法(Algorithm)是一系列解决问题的清晰指令,它代表用系统的方法描述解决问题的策略机制。也就是说,能够让一定规范的输入在有限的时间内获得所要求的输出,即对问题的把握要以系统为着眼点,以规范为指引,指示精确、可量化。而上一段的“描述”以这样的标准判断,显然是不合格的。
笔者认为,把问题从模糊到清晰搞清楚的过程需要一系列方法和策略,这就是计算思维的方法论。但从应用的角度,弄清“问题是什么”体现在具体实践的过程中,是不能脱离人和真实情境。也就是说,应用计算思维时一定要考虑到学生的认知水平、信息技术能力,以及能理解的探究方式、方法。
因此,笔者认为可以把Scratch程序教学“迷宫游戏”这个问题装载到项目中,用研究性学习方法,帮助学生更好地把握自己的思维过程和实践过程。例如,在装载项目的过程中,其划分阶段既可以参考研究性学习的“进入问题情境—实践体验—表达交流”三阶段模式,也可以由教师引导参考《软件工程》并结合实际情况,将过程进一步细化为五阶段模式,即制定游戏规则阶段、设计和资料准备阶段、游戏制作阶段、测试并修改阶段及保存发布或展示阶段(如图1)。
计算思维是运用计算机科学的基础概念去求解问题方法,其特征之一是建立在由人或机器执行的计算过程的能力和限制之上的。所以计算思维的思考方式不但要遵循人的认知发展规律,还要理解和适应计算机科学的一般规律。由此,笔者更倾向于用五阶段模式划分项目过程,这也是考虑到“用Scratch创作迷宫游戏”与学生接触过的研究性学习项目存在一定区别,它更贴近于软件工程。
首先,软件也属于工程类项目,工程项目都需要以计算为基础来量化各个生产环节,用科学的手段控制中间状态。如果是程序项目,监测中间状态的本质就是检查数据流。虽然这样的学习活动是充满趣味的虚拟创作,但它的建设过程却贴近真实世界的生产过程,需要考虑更多的实际因素,对于学生来说,这即便是挑战,也赋予了更深刻的意义。其次,将问题装载在项目中,原先仅是一段模糊、非量化的“迷宫游戏”的表达,但被划分到具体的、分阶段的工程中后,虽然这个过程并非标准化、数据化信息的过程,但它构成了计算量化的前提。再次,笔者认为应将计算思维视角下的明确问题和制定解决方案看成一个完整的思维过程,即在项目中明确问题与问题求解一脉相承,在迭代过程中确定最佳的问题解决方案。
2.把问题转换为一个信息处理的流程
在应用IT系统时,我们常提及的操作步骤就是业务流程。而信息流程是业务流程中执行事件形成的数据流。创作软件程序是在你知道“业务是怎样的”情况下,合理地部署数据流向,至少要按计算机能够接受的方式或遵循开发工具(本案例是Scratch)的基本规则,合理地分解、部署业务。以“迷宫游戏”为例,如何合理地分解、部署业务?
“制定游戏规则阶段”和“设计和资料准备阶段”是创作前的思考环节,教师通过对游戏规则的分析、列写,可以帮助学生体会计算的标准化控制;通过设计角色、梳理游戏流程,可以有效地把握后续各阶段工作的路径。在这个环节中,把复杂问题分解为易于管理的子集,涉及定量分析或计算,这对还处在基础教育阶段的学生来说,具有相当大的难度。因此,教师需要思考“如何帮助学生搭建思维‘脚手架”的问题,以便引导学生探究和发挥自己的创造力,在不降低难度的前提下,体会启发式推理思考过程的严谨与乐趣。
在“迷宫游戏”中,教师帮助学生搭建思维“脚手架”的策略,具体有以下两点:
(1)思维导图BOIs策略
根据“迷宫游戏”出现多角色的场景特征,笔者首先选用思维导图的BOIs逻辑分类策略,这有利于学生把自己的设计里要出现的角色想全。
BOIs,即基本顺序思想(basic order ideas)。它是通过分门别类、条理化的思维技巧,帮助学生厘清思路,发现所想事件或系统的内在逻辑。思维导图BOIs策略中最重要的是ordering,也就是要在思维中构建一定的顺序。具体如下:
①大的分类。
学生通过分析问题分离角色。笔者想到的第一层大分类是:主角类、配角类、其他角色类。主角类非常明确地指“青蛙”,其他角色类是游戏中的计分、关卡等角色,相对来说这些都比较清晰;较为复杂的是配角类,他们是主角在迷宫中行走时所遇到的各种角色,其中有的会造成加减分,有的会造成“生命值”损失或补给等,并且每个角色都有自己特定的造型、形态、动作。此时,学生的头脑中一定会出现很多想法,但整体上是有序的、全面的。
②中间阶层的分类。
在划分大类之后,需要继续思考头脑中涌现的想法与划分大类之间有无中间阶层。根据之前对“问题是什么”的分析,可以继续将配角分为减分、减生命值、加分、加生命值等类型,然后对这些类型重新进行排列组合,这个过程可以去掉其中的一些组合,最后确定创作者自定义的角色类型(如图2)。
当然,还可以进一步分类并完善一些细节。例如,“不减分、减生命值”角色类型可以分为炸弹和障碍物两种,“减分”和“加分”的角色类型可以细化为三个得分档位(如图3)。通过这样的思路梳理,已经基本可以确定游戏要构建哪些角色,以及这些角色的属性特征。
相较于把已知的东西罗列在纸上,思维导图BOIs策略是把头脑中还不够准确、全面的想法激活出来。这种举一反十的思考方式,实现了从无到有的过程,是创造的一部分。
(2)绘制表格策略
遵循Scratch程序的“广播—接收广播”“新建功能块”等规则,把众多角色直接或间接的互动关系一一梳理、记录在案。此时可以采用绘制表格策略:先把各角色在同一横排依次列写。然后把每个角色的属性,与其他角色之间的互动关系在纵列中逐一记录。接着给各个角色起名,带入细节信息,直到表格中的角色数据可以用于后续阶段的程序创作(如下表)。
思维导图BOIs策略和绘制表格策略既体现了学生进入问题情境时的思维过程,也体现了学生制定问题解决方案的实践过程。教师引导学生借助思维工具在项目中探索,从根本上说是培养学生的逻辑思维能力。
应用计算思维过程中的悖论
上述内容仅仅是通过两个思维策略把计算思维针对问题解决过程中的“思考环节”粗略地勾勒出来。而计算思维是数学思维和工程思维的互补及组合,思考环节的成果可以统御项目中的后续阶段。教师不断探索计算思维与教学策略结合,也是在整合自己的思维逻辑。
计算思维运用到非计算机学科或一门课程上,如何分解步骤、如何应用策略使用思维工具等,都将是教师设计课程时的难点(思维工具应用的有效性)。除此之外,对于中小学生的课程,教师是教会学生一门编程语言,或是带学生实践一次软件工程最基础的规划,还是让学生体验流程后形成这样的思考习惯?这都还存在一定的争议。