王继华
【摘要】 本文通过文献分析介绍了计算思维的关键内涵“抽象”,然后通过对英国计算教育课程的分析,提出了将“抽象”和实现“自动化”的编程结合起来开展计算思维教学的总原则,最后用两个典型的案例介绍了如何开展计算思维的教学。
【关键词】 计算思维 抽象 自动化 编程 教学
【中图分类号】 G633.67 【文献标识码】 A 【文章编号】 1992-7711(2016)02-090-020
计算思维是美国卡内基·梅隆大学(CMU)计算机科学系主任周以真(Jeannette M.Wing)教授于2006年提出,在美国计算机权威刊物《Communications of the ACM》上首次提出了计算思维(Computational Thinking)的概念:“计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。它包括了涵盖计算机科学之广度的一系列思维活动。”但由于计算思维的内涵丰富,在理解上给许多人带来了困扰,甚至于有的人一开始并不承认计算思维的存在。
但随着包括计算机科学界在内的各界科学家的逐渐接受,计算思维在西方科学界越来越受重视。冠以“计算”二字的诸如“计算生物学”、“计算物理学”、“计算化学”等学科早已涌现,并对各个学科的发展做出了重要贡献。2013 年的诺贝尔化学奖授予了三位美国科学家马丁·卡普布拉斯、迈克尔·莱维特和亚利耶·瓦谢尔,表彰他们在开发多尺度计算模型处理复杂体系的化学反应,利用计算机模拟化学反应领域所作出的开创性贡献,他们的贡献就是典型的计算思维的体现。信息时代的创新,如果缺少了计算思维,犹如大雁失去了翅膀。
计算思维教育在美国、英国和一些发达国家受到了前所未有的重视。但内涵广泛的计算思维的关键到底是什么?怎样去培养?本文试图从计算思维的提出者周以真教授的演讲稿的学习开始,借鉴英国的经验,谈谈我们的做法。
1.抽象:计算思维的关键
我们检索了许多关于计算思维的论文和演讲稿,期望搞清楚计算思维的关键内涵到底是什么,期望有一个通俗易懂的解释能在中国传播。在此过程中我们发现周以真在2011年3月4日的卡内基·梅隆大学“OurCS Workshop”上做的“计算思维”的演讲稿有一个清晰的图示,如图1.
在这个图示中,计算思维被描述为“侧重于抽象”,这里的抽象是或者类似为数学模型,这是可计算的前提条件。抽象的过程可以分解为:选择正确的抽象;同时操作多个层次的抽象模型;定义层之间的关系。“自动化”在图1中反映为对“抽象”的处理,即把高强度的或海量的运算交给高速的计算设备“自动化”处理,通过处理后的反馈,不断优化抽象模型。其重要性虽然被放到“抽象”之后,但理解并学会实现一定的“自动化”——学习编程,也是很有必要的。
什么是抽象?把现实中的事物或解决问题的过程,通过化简等方式,抓住其关键特征,降低其复杂度,变为计算设备可以处理的模型。
现代计算设备的计算能力虽然已经相当高,但在处理复杂事物上还是力不从心。比如天气预报、核爆炸、药物学与分子生物学的计算……所以,藉由抽象,降低复杂度,但又可以非常逼近真实事物,使其不至于失真。前面所说的诺贝尔化学奖得主的算法,就是在抽象上做足了功夫后才成功的,不然很难反映真实的化学实验过程。
抽象过程中的化简对重构事务处理的流程,利用自动化的高效率,人机结合,可以使生产、生活和学习的效率大大提高。比如自动化生产、自动化办公、网上购物、滴滴打车、自适应考试与学习诊断,等等。在今天几乎所有现实都可以编码为“0”和“1”的数字化时代,谁的抽象能力强,谁就可以体现出新的创造性。
所以,我们不妨将“抽象”看做计算思维的关键,设法贯穿到中小学教育中,让学生从小具备“抽象”的意识和能力,为发展数字化的创新能力打下基础。
2.英国计算教育中对“抽象”的安排与启示
计算思维的培养受到了西方发达国家的高度重视。美国总统奥巴马与计算机科学领域的企业界领袖如Facebook的CEO扎克伯克等一起,号召每一个孩子一起来学习编程。美国国际教育技术协会和计算机科学教育协会5年前就制定了相应的课程纲要,但因为其计算机科学的专业性要求过强,难以实施,本文就不再介绍。但英国在此方面的行动显得容易实施一些,值得我们学习和分析借鉴。
为了改变ICT教育以学习office等为主的落后的面貌,在计算机科学家群体和教育专家的倡议下,英国教育部于201x年专门研制了计算教育的国家课程。其学习目的是:“高质量的计算(Computing)教育能让学生使用计算思维和创造力来理解和改变世界。计算与数学、科学、设计、技术等深度关联,提供了一个理解自然系统和人工系统的视角。计算的核心是计算机科学,在这门学科中学生学习信息与计算的原理,数字系统如何工作以及如何通过编程使得这些知识得以使用。基于这些知识与理解,让学生运用信息技术创造程序、系统等。计算教育也能确保学生具备数字素养,让学生应用并通过ICT表达自己的想法,使他们能达到一定的水平以适应未来工作,并成为数字社会的积极参与者。”该课程目的的陈述,把计算思维放到了核心位置。
课程的具体目标是:
(1)让学生理解和应用计算机科学的基本原理和概念,包括抽象、逻辑、算法、数据表示;
(2)能使用计算术语来分析问题,并具备为解决这些问题不断地编写计算机程序的实践经验;
(3)能评价和使用信息技术,包括新兴的或不熟悉的技术,分析性地解决问题;
(4)成为有责任心、有能力、自信的、有创造力的ICT使用者。
该目标对学生掌握计算机科学的概念如“抽象”等和涉及“自动化”的编程直接提出了要求。在学科内容的具体规划上,从5岁开始的幼儿园阶段到16岁的高中阶段,分为四个学段分别进行了安排。对于编程的教学,5岁开始的学段就让安排了学习编程的内容:
(1)理解什么是算法,算法作为数字设备上的程序是如何被实现的,并通过精确和清晰的指令执行算法;
(2)创建和调试简单的程序;
(3)使用逻辑推理预测简单程序的行为……
到了11岁的学段,才明确安排有关“抽象”的内容,并对学习“文本”的编程语言提出了要求:
(1)设计、使用和评价计算抽象,这个计算抽象可以模拟真实世界的问题和物理系统的状态和行为。
(2)理解几个反映计算思维的关键算法(如排序和搜索的算法),利用逻辑推理来比较使用不同算法解决同样问题的绩效。
(3)使用两个或两个以上的编程语言,其中一个是文本,每个语言用于解决各种计算问题;正确使用数据结构(如列表、表格或数组),使用过程或函数来设计和开发模块化程序。
这样的内容安排,对“编程”的要求是很高的,虽然越是懂得编程、算法、逻辑(主要是指编程中的判断和循环)和数据表示,越是有利于学习“抽象”。对“抽象”的要求后移太多,有可能造成编程——“自动化”和“抽象”的脱节,其实两者完全可以结合起来,放在一起学习。
另外,对于在课时捉襟见肘的中国中小学教育,我们倾向于推荐Scratch这样可视化的搭积木式的编程,不推荐“文本”的编程语言的学习。即便是Python这样的相对比较容易上手的“文本”编程语言,每周一课时的安排,“文本”编程语言的学习和实践的时间是远远不够的,如果要求所有的学生把精力放在这个方面将是得不偿失的。建议对那些学有余力的学生,通过课外兴趣小组的方式去让他们进行深入的学习。
3.如何进行“抽象”的教学
我们多年的实践经验是:不孤立地教编程,一开始就让学生把抽象和编程结合起来。这是总的教学原则。
我们问一位在电大教JAVA的研究生,“你自己能用JAVA写个小软件吗?”他说:“不能。”“那么你教的学生能做到吗?”他又说:“不能”。“那么,考试怎么过关呢?”他说:“都是考的一些语句命令的简单套用……”这样的编程教学在以往中小学教LOGO语言和BASIC语言时同样是个普遍现象,教学就是教语句命令,造成学而不能致用。孤立教编程的这条路,是已经失败了的,是走不通的。
那么如何将“抽象”和编程结合起来呢?我们介绍两个例子来说明。
(1)“花”的Scratch编程
抽象的目的是为了把复杂的现实化简为可计算的模型,比如对图2中一朵花进行分析,8个花瓣具有相似性,那么可以把一片花瓣绘制为(抽象)如图3中的样子(当然还有继续抓特征继续完善的余地)。然后建模,即8个花瓣围成360°一圈,每个花瓣围绕下端的中心点旋转45度即可实现。通过编程实现“自动化”绘制,见图4,达到图5的效果。如果绘制出来的效果距离抽象的对象(花)太远,可以继续修改完善图3中的单个花瓣,直到满意为止。这种从抽象到编程实现的过程是较为简单的,小学生完全可以做到。
(2)小游戏的Scratch编程
理解了“花”的抽象,就容易理解更复杂的抽象了。用Scratch编写小游戏是最常见的教学内容,能较好地吸引学生的兴趣。有些游戏对抽象的要求较低,比如打地鼠游戏,从角色到舞台的安排到编程的实现,并不困难。我们可以在Scratch的各种教材里都看到设计这个游戏的内容。
模拟类的游戏可能对“抽象”的要求会更高一些,比如要编写一个食物链系统的模拟游戏,学生要搞清楚这个系统中有哪些动植物(抽象出角色)?这些动植物之间的食物关系是怎样的(抽象出一个个的角色之间的关系)?当在舞台(比如草地)中这些动植物遇到时各自会出现什么结果,一起和谐共生时相互间数量关系的影响(抽象为数学模型)?如果增加某个动物的数量,会对其它动植物的数量产生什么影响(应用该数学模型)……
4.结语
计算思维的教学对我国中小学教育来说,还是一个全新的领域,不仅基本理论研究没跟上,教师的教学准备也相当不足。本文试图寻找计算思维的关键点来推进同行对计算思维的理解,以及思考在教学中的应用,期望能起到抛砖引玉的作用,共同推动我国信息技术教育的发展。
[ 参 考 文 献 ]
[1]周以真.计算思维[OL].http://csta.acm.org/Curriculum/sub/Curr Files/Wing CTPrez.pdf.
[2]牛杰,刘向永.从ICT到Computing:英国信息技术课程变革解析及启示[J].电化教育研究,2013(12).