運算思維‎ > ‎

计算思维培养的关键

抽象:计算思维培养的关键

转载2016-03-01 17:48:00

王继华  深圳龙岗区平安里学校

本文发表在《中小学信息技术教育》2016年第3期​

 【摘要】本文通过文献分析介绍了计算思维的关键内涵——“抽象”,并通过对英国计算教育课程的分析,提出了将“抽象”和实现“自动化”的编程结合起来开展计算思维教学的总原则,最后用两个典型案例介绍了如何开展计算思维教学。

【关键词】计算思维;抽象;自动化;编程;教学

【中图分类号】G424   【文献标识码】A

【论文编号】1671-7384(2016)03-0045-03

 

计算思维是美国卡内基·梅隆大学(CMU)计算机科学系主任周以真教授于2006年提出的。她在美国计算机权威刊物《Communications of the ACM》上首次提出了计算思维(ComputationalThinking)的概念:“计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。它包括了涵盖计算机科学之广度的一系列思维活动。”由于计算思维的内涵丰富,在理解上给许多人带来了困扰,甚至有的人一开始并不承认计算思维的存在。

但随着各界科学家的逐渐接受,计算思维在西方科学界越来越受重视。冠以“计算”二字的诸如“计算生物学”“计算物理学”“计算化学”等学科也已涌现,并对各个学科的发展做出了重要贡献。2013 年的诺贝尔化学奖授予了三位美国科学家马丁·卡普布拉斯、迈克尔·莱维特和亚利耶·瓦谢尔,表彰他们在开发计算模型以模拟处理复杂体系的化学反应领域所做出的开创性贡献。他们的做法就是典型的计算思维的体现。信息时代的创新,如果缺少了计算思维,犹如鸿雁失去了翅膀。

计算思维教育在美国、英国等发达国家受到了前所未有的重视。但内涵广泛的计算思维的关键到底是什么?怎样去培养?本文试图从计算思维的提出者周以真教授的演讲开始,借鉴英国的经验,谈谈我们的观点和做法。

抽象:计算思维的关键

我们检索了许多关于计算思维的论文和演讲稿,期望弄清楚计算思维的关键特征到底是什么,并有一个通俗易懂的解释能在中国传播。我们看到,李锋和王吉庆(2013)认为,计算思维是“数据抽象、模型建设、自动化实现”。[1]钟柏昌和李艺(2015)对各种计算思维的概念进行了分类,认为有七种观点:问题解决说、抽象说、自动化说、构造说、信息表达说、社会计算说和三维目标说。[2]如此不统一的概念,给课程标准的制定和教学设计带来了困扰。化简,抓关键,或许是计算思维理解和传播的必由之路。为此,我们再次研究了周以真的一些演讲,发现她在2011年3月4日的卡内基·梅隆大学“OurCS Workshop”上做的“计算思维”的演讲稿中有一个比较容易理解的清晰图示(如图1)。[3]

 关于计算思维的模型

在这个图示中,计算思维被描述为“聚焦于对抽象的处理”。这里的抽象是指抽象为数学模型,这是可计算的前提。抽象的过程可以分解为:选择正确的抽象,同时操作多个层次的抽象模型,定义层之间的关系。“自动化”在图1中指的是对抽象的处理,即把高强度的或海量的运算交给高速的计算设备“自动化”处理,通过处理后的反馈,不断优化抽象模型。其重要性虽然被置于“抽象”之后,但学会实现一定的“自动化”,即学习编程也是很有必要的。

什么是抽象?它是指把现实中的事物或解决问题的过程,通过化简等方式,抓住其关键特征,降低其复杂度,变为计算设备可以处理的模型。

现代计算设备的计算能力虽然已经相当高,但在处理复杂事物上还是力不从心。比如天气预报、核爆炸、药物学与分子生物学的计算……所以,借由抽象,降低复杂度,可以非常逼近真实事物,又不至于失真。前面所说的诺贝尔化学奖得主的算法,就是在抽象上下足了工夫后才成功的,不然很难反映真实的化学实验过程。

抽象过程中的化简对于重构事务处理的流程,利用自动化的高效率大大提高生产、生活和学习的效率至关重要。比如自动化生产、自动化办公、网上购物、滴滴打车、自适应考试与学习诊断,等等。在今天,几乎所有现实都可以编码为“0”和“1”,谁的抽象能力强,谁就可以体现出新的创造性。

所以,我们不妨将抽象看作计算思维能力培养的关键,设法贯穿到中小学教育中,让学生从小具备“抽象”的意识和能力,为发展其数字化的创新能力打下基础。

 

英国计算教育对“抽象”的启示

计算思维的培养受到了西方发达国家的高度重视。美国总统奥巴马与计算机科学领域的企业界领袖如Facebook的CEO马克·扎克伯格等一起,号召每一个孩子一起来学习编程。美国国际教育技术协会和计算机科学教育协会多年前就制定了相应的课程纲要,但因为计算机科学的专业性要求过高,难以实施,本文不做重点介绍。但英国在此方面的行动显得容易实施一些,值得我们学习和分析借鉴。

为了改变ICT教育以学习Office等为主的落后局面,在计算机科学家群体和教育专家的倡议下,英国教育部于2013年专门研制了计算教育的国家课程标准。[3]其课程目的是:“高质量的计算(Computing)教育能让学生使用计算思维和创造力来理解和改变世界。计算与数学、科学、设计、技术等深度关联,提供了一个理解自然系统和人工系统的视角。计算的核心是计算机科学。在这门学科中,学生要学习信息与计算的原理、数字系统如何工作以及如何通过编程使这些知识得以使用。基于这些知识与理解,教师还得让学生运用信息技术创造程序、系统等。计算教育也能确保学生具备数字素养,让学生应用并通过ICT表达自己的想法,使他们能达到一定的水平以适应未来的工作,并成为数字社会的积极参与者。”该课程目的的陈述,把计算思维放到了核心位置。

1.课程目标

(1)让学生理解和应用计算机科学的基本原理和概念,包括抽象、逻辑、算法、数据表示;

(2)能使用计算术语来分析问题,并具备为解决这些问题不断地编写计算机程序的实践经验;

(3)能评价和使用信息技术,包括新兴的或不熟悉的技术,分析性地解决问题;

(4)成为有责任心、有能力、自信的、有创造力的ICT使用者。

该目标对学生掌握计算机科学的概念(如“抽象”等)以及涉及“自动化”的编程直接提出了要求。

2.学科内容规划

在学科内容的具体规划上,从5岁开始的幼儿园阶段到16岁的高中阶段,分为四个学段分别进行了安排。对于编程教学,5岁开始的学段就安排了学习编程的内容:

一是理解什么是算法,算法作为数字设备上的程序是如何被实现的,并通过精确和清晰的指令执行算法;

二是创建和调试简单的程序;

三是使用逻辑推理预测简单程序的行为……

到了11岁的学段,才明确安排有关“抽象”的内容,并对学习“文本”的编程语言提出了要求:

一是设计、使用和评价计算抽象,这个计算抽象可以模拟真实世界的问题和物理系统的状态和行为。

二是理解几个反映计算思维的关键算法(如排序和搜索的算法),利用逻辑推理来比较使用不同算法解决同样问题的绩效。

三是使用两个或两个以上的编程语言,其中一个是文本,每个语言用于解决各种计算问题;正确使用数据结构(如列表、表格或数组), 使用过程或函数来设计和开发模块化程序。

这样的内容安排,对编程的要求是很高的。虽然越是懂得编程、算法、逻辑和数据表示,越有利于学习“抽象”,但对“抽象”的要求后移太多,有可能造成“自动化”编程与“抽象”的脱节,其实两者完全可以结合起来,放在一起学习。

另外,对于课时捉襟见肘的中国基础教育,我们倾向于推荐Scratch这种可视化的搭积木式的编程,不推荐“文本”编程语言的学习。即便是Python这样相对容易上手的“文本”编程语言,每周一课时的安排对于其学习和实践来说也是远远不够的。如果要求所有学生把精力放在这上面,可能反会得不偿失。目前最好的做法也许是对那些学有余力的学生,通过课外兴趣小组的方式去让他们开展深入的学习。

如何进行“抽象”的教学

我们多年的实践经验是:不孤立地教编程,一开始就让学生把抽象和实现“自动化”的编程结合起来。这也发展成为我们总的教学原则。

我们问一位在电大教JAVA的研究生:“你自己能用JAVA写个小软件吗?”他回答说:“不能。”“那么你教的学生能做到吗?”他又说:“也不能。”“那么,考试怎么过关呢?”他说:“都是考一些语句命令的简单套用……”这在中小学LOGO语言和BASIC语言的教学中同样是普遍现象。人们往往会沮丧地发现,教学就是教语句命令,造成学生学而不能致用。孤立地教编程这条路,注定是走不通的。

那么,如何将“抽象”和编程结合起来呢?下面我们通过两个例子来说明。

 1.“花”的Scratch编程

抽象的目的是把复杂的现实化简为可计算的模型。比如对图2中一朵花进行分析,8个花瓣具有相似性,那么可以把一片花瓣绘制(抽象)为图3中的样子(当然还有继续抓特征并继续完善的余地)。然后建模,即将8个花瓣围成360°,每个花瓣围绕下端的中心点旋转45°即可实现。通过编程实现“自动化”绘制(如图4),最终达到图5的效果。如果绘制出来的效果距离抽象的对象(花)太远,可以继续修改完善图3中的单个花瓣,直到满意为止。这种从抽象到编程实现的过程是较为简单的,小学生完全可以做到。

 

2.小游戏的Scratch编程

理解了“花”的抽象,就容易理解更复杂的抽象了。用Scratch编写小游戏是最常见的教学内容,能较好地吸引学生的兴趣。有些游戏对抽象的要求较低,比如打地鼠游戏,从角色的设定到舞台的安排,再到编程的实现并不困难。我们可以在Scratch的各种教材里看得到设计这个游戏的内容。

模拟类的游戏对“抽象”的要求会更高一些,比如要编写一个食物链系统的模拟游戏,学生要搞清楚这个系统中有哪些动植物(抽象出角色)、这些动植物之间的食物关系是怎样的(抽象出一个个角色之间的关系),还要明晰当在舞台(比如草地)中这些动植物相遇时,各自会出现什么结果;动植物一起和谐共生时,相互间的数量关系如何(抽象为数学模型);如果增加某种动物的数量,会对其他动植物的数量产生什么影响(应用该数学模型)……

计算思维的教学对我国中小学教育来说,还是一个全新的领域,不仅基本理论研究没跟上,教师的教学准备也相当不足。本文试图通过寻找计算思维的关键特征——“抽象”来加深同行对计算思维的理解,通过分析国际经验来获得借鉴和启发,通过基于Scratch的案例来思考在教学中的应用。但是,真正做过程序员的人都很清楚,Scratch的功能是相当有限的,要想承载起培养中小学生计算思维的全部重任是不现实的。到底如何才能做好计算思维的培养工作,还需我们不断去探索。

 

参考文献

[1]李锋,王吉庆. 计算思维:信息技术课程的一种内在价值[J].中国电化教育,2013(8).

[2]钟柏昌,李艺. 计算思维的概念演进与信息技术课程的价值追求[J].课程教材教法,2015(7).

[3]周以真.计算思维[DB/OL].http://csta.acm.org/Curriculum/sub/CurrFiles/WingCTPrez.pdf.

[4]牛杰,刘向永. 从ICT到Computing:英国信息技术课程变革解析及启示[J].电化教育研究,2013(12).

Comments