计算思维是什么?

1. 计算思维起源

2006年计算机科学家Jeannette Wing在《ACM通讯》(Communications of ACM)上,发表了一篇有关计算思维的文章。至此,“计算思维”开始进入大众的视野。

2. 被广泛接受的概念

在经受研讨会、学术研究、一线老师反馈等一系列的“蹂躏”之后,大家普遍接受Wing教授(2011)重提此话题时对“计算思维”的定义:计算思维是指对问题进行阐释和解决的思考过程,并形成能被信息处理机构有效执行的解决方案。

然而,无论如何定义,它依然逃不过“分析问题”“解决问题”这两个关键词,只不过执行这两件事的主体—人类,需要模仿一下自己的发明—计算机。

(AI:啊,人类在模仿自然界生物之后,开始模仿自己的发明,咦—好自恋的人类)

现在被广泛认可为构成计算思维的要素,及促进其学习和发展的课程基础的要素如下:

•抽象和模式概括(包括模型和仿真模拟)

•系统性信息处理

•符号系统和及其展示

• 控制流程的算法概念

• 结构化问题分解(模块化)

• 迭代,递归及并行思维

• 条件逻辑

• 效率及性能限制

•调试和系统错误监测

计算思维培养工具及其测评

随着计算思维的定义逐渐获得共识,近来研究重点转向更加实际的问题,即如何促进和评估计算思维的发展。过去三十年来,有大量文献涉及了编程及计算思维的教学法和学习策略。然而,大部分研究对象是本科阶段的计算机科学教育。但本文只包含近期关于21世纪培养计算思维的工具和学龄儿童的研究。

1.培养工具

自LOGO编程语言出现后,“低地板,高天花板”就成为创建儿童编程环境的指导原则之一。简单点说,这些编程环境既需要满足易于初学者入门的程序(低地板),同样要具有具有良好扩展性满足高级程序员使用(高天花板)。对学龄儿童来说,丰富的计算环境和有效的计算思维工具必须具有低门槛和高的上限两个特征,此外还需要包含一些脚手架工具,支持编程移植性,支持公平,具有系统性和可持续性等特征(Repenning,Webb&Ioannidou,2010)。有几种编程工具可以不同程度地满足这些标准:

其中受欢迎的是图形化编程环境,如Scratch,Alice,GameMaker,Kodu和Greenfoot;

—基于Web的仿真部署工具,如Agentsheets 和Agentcubes;

—用于教育机器人、科学实验的低成本开放源码硬件设备,如Arduino和Gogo Boards。

图形化编程环境相对易于使用,且可以让早期的体验者专注于设计和创造,避免陷入编程语法的难题。比如,通过让新手组合代表不同动作的代码块控制屏幕上演员动作来构建程序的方式(例如:Scratch),可以使编程变得更加简单。

一般而言,游戏设计和机器人等课程活动可以作为迭代探索计算思维的好方法,不仅利于激励和吸引学龄儿童,也能让他们了解计算机科学。但是,可视化和可触摸编程体验往往需要学习Python,Java和Scheme等高级编程语言。

有人建议通过一些特定的情景吸引女孩对计算产生兴趣,这些建议也催生了为弥补计算领域性别差距所开发的各种工具。这些工具提供了更多计算思维的学习机会,同时也能很好的吸引女孩投入其中。比如,电子织物和其他带精良硬件(如Lilypad Arduino)的“计算手工”套件,让孩子们可以将传统艺术及缝纫和画图等手工艺品与计算及电子产品相结合。MITAppInventor是一种可视化编程环境,使用类似于Scratch的图形化代码块来搭建Android移动应用,与其他工具相比,具有无性别色彩和较高完成度的特点。它不仅降低了创造性应用程序搭建的难度(所有青少年,包括女孩都跃跃欲试),同时融入复杂的计算思维概念,包括程序和数据抽象,迭代和递归思维,结构化任务分解,条件和逻辑思维,以及调试等内容。

尽管目前计算思维的研究环境各不相同,但仍有许多潜在的领域尚未开发。例如,方便可触化计算产品开发的Fab Labs,Makerspaces和拥有DIY活动的Maker Faire 与 Instructables等,其中,后者能够为儿童提供非正式“黑客”体验或智能手机的操作活动,这些未知的可能性都令人充满期待。需要注意的是,计算工具的开发,不仅需要具备其自身的有效性,还要体现其对计算思维的培养。此外在满足人类对计算的常规理解基础上,也要符合学习者的认知发展水平。

2. 评估方式

如果不进行评估,计算思维教育很难成功进入任何K-12课程。此外,为了有效评估计算思维课程,普遍用作评估的方法都需要再次验证。

在计算思维评估问题的最新研究中,Werner,Denner,Campe和Kawamoto(2012)在Alice编程工具的情境式教学中,用学生创建的或预先设计的编程工具来评估学生对解决问题的抽象能力、条件逻辑、算法思维等计算思维概念的理解和使用

一直以来,教育界都呼吁用解构、反向工程和调试程序这些指标评估儿童在计算环境下的理解力。Fields,Searle,Kafai和Min(2012)曾通让学生调试预设的故障电子织物来评估其工程和编程技能。HanKoh,Basawapatna,Bennett和Repenning(2010)则用一些高难度的问题对学生进行评估,这种使用潜能激发式的方法在实际操作中取得了一些成效。

在过去二十年中,“学术讲座”(以类似小型演讲的方式进行小组展示)被用来推广和评估数学和科学素养。通过这些富有计算思维的活动,评估学生计算机科学词汇和语言的使用状况,这也是另一种评估计算思维发展的方式(Grover,2011)。

政策支持

Wilson和Guzdial(2010)认为,虽然美国国内对加强K-12领域STEM教育的紧迫感已经转化为数十亿美元的经费,但明确用在计算机教育方面的经费仍然不足。美国国家科学基金会通过一些项目对此进行支持,例如CPATH(振兴本科计算机教育计划),BPC(扩大计算教育参与度计划),以及最近大力推动将计算思维/计算机科学概念引入中学的CE21(为21世纪准备的计算教育)项目。此外,另一个来自DARPA计划举措,以引导有兴趣的初高中生进入计算机科学职业为目的,计划中包括CS-STEM和卡内基梅隆大学的FIRE(通过机器人探索创新)。

虽然正在进行的计算思维发展研究将有助于在K-12阶段教育中加入计算课程,但是在培养计算教育的师资和确保教育性别平等方面仍然面临巨大的挑战

在课程方面,除了美国大学预修课程中设有“计算机科学原理”之外,计算机科学探究课程也将加入高中生1年制大学预科课程。其他用来将计算机科学引入学校的举措包括CS4HS和ComputingintheCore,这两个活动汇集了来自学术界、国家机构、以及Microsoft和Google等公司的共同协作。CSTA的K-12计算机科学示范课程为学校提供课程建议,用以培养学生兴趣,吸引和激励学生学习计算机科学。此外,Google的探索性计算思维网站也拥有大量的计算思维学习资源。ACM最近也在其ACMInroads季刊中引入了新板块EduBits,展示了ACM及其附属机构的主要教育活动。

未来:扩大实证研究

近期关于计算思维方面的许多工作,主要集中于定义计算思维的含义和促进计算思维发展的工具。虽然在确定培养计算能力的课程和及其发展评估的领域已经取得了一些进展,但仍然存在很大的不足,还需要实证研究进行验证。

关于学龄儿童计算思维的实证研究,可以充分利用计算机科学本科生在早期编程体验中所面临问题的相关研究(语法问题除外),如在儿童计算思维能力培养中是否存在明确的障碍或困难(如递归)?如果有的话,应该如何解决?

还有一个尚未被充分开发的领域是,人们对计算思维和计算机科学刻板印象的处理,以及这些问题的处理对学习者身份认同有何影响(Mercier,Barron和O’Connor,2006)。此外,在我们为学生提供旨在培养计算思维能力的学习体验时,这些问题有多重要?最近关于学生对计算态度的调研,可以更好地了解这些问题。

显然,要想对儿童计算能力有更清楚的理论和实践了解,还有许多工作要做。例如,如果儿童参加了旨在培养计算思维的课程,我们期望孩子知道什么或将什么做得更好吗?我们需要在明确这些问题的答案之后才能大规模将计算思维课程引入学习。