分享

计算思维

 tldom 2020-03-15
1. 计算思维是什么?

1982年诺贝尔物理奖得主肯尼斯·威尔逊在他的获奖演讲中提到计算在他的工作中扮演的重要角色,他认为计算是所有科学的研究范式之一,区别于理论和实验,所有的学科都面临算法化的“巨大挑战”。所有涉及自然和社会现象的研究都需要借助计算,使用计算模型做出新发现和推进学科发展。他的工作和对于计算方法的大力推荐,激发了人们对于计算科学的认识和重视。

2006年,美国卡内基·梅隆大学的周以真(Jeannette M. Wing)教授,为了帮助人们更好地认识机器智能的不解之谜,发表了题为 Computational Thinking的文章,提出了一种建立在计算机处理能力及其局限性基础之上的思维方式——计算思维。她认为,计算思维就是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动,能为问题的有效解决提供一系列的观点和方法,它可以更好地加深人们对计算本质以及计算机求解问题的理解,而且还能克服“知识鸿沟”,便于计算机科学家与其他领域专家交流[2]

2007年,周以真教授在卡内基·梅隆大学成立了计算思维研究中心,并修订了该大学一年级学生的课程,籍此培养该校非计算机专业学生的计算思维能力。2008年,周以真进一步指出计算思维是一种分析思维, 在问题解决的不同阶段会用到数学思维,在设计和评价复杂系统时会用到工程思维,在理解概念时会用到科学思维。可以看出,计算思维是多种思维的综合应用计算思维不是要让人类像计算机那样思考,而是要培养有效使用计算解决复杂问题所必需的一组心智工具集
美国计算机协会( ACM) 2008 年在对CC2001( CS2001) 的中期审查报告《CS2001 Interrim Review》(草案)中明确将“计算思维”与“计算机导论”课程绑定在一起,并要求该课程讲授计算思维的本质。此外,卡内基·梅隆大学在美国国家科学基金会( NSF) 的支持下,设计了一门全新的包含计算机和计算思维基本概念的课程。受此影响,2008年11月,全国高等学校计算机教育研会在桂林召开“计算思维与计算机导论”学术研讨会,揭开了国内高校开展计算思维研究的序幕。
国防科技大学人文社科学院的朱亚宗教授指出:计算思维(Computational Thinking)是人类三大科学思维方式(计算思维、实验思维、理论思维)之一,虽然计算思维较晚才受到关注,但它却在当今社会的发展中起着举足轻重的作用[1]
美国国家研究委员会(NRC)2010年组织了一次“计算思维的范围和性质研讨会”,但与会者对计算思维的范围和性质观点各异,未能对计算思维的基本定义达成共识。尽管对计算思维这一概念在思想方法、思维模式和思维过程方面没有统一和明确的界定,但是有两种认识被普遍接受:(1)计算思维在专业能力和信息素质培养上的重要性是不言而喻的;(2)计算思维是把现实问题变成计算机可计算模型并产生结果的思维过程,是与计算实践密切相关的。
海门丁杰( Hemmendinger,2010) 认为教授计算思维的目标是“教学生像经济学家、物理学家和艺术家那样思考问题,并理解如何使用计算解决问题,创建和发现能卓有成效进行探索的新问题”,并不是让每个人都像计算机科学家那样思考。
2010年教育部高等学校计算机科学与技术教学指导委员会编制《高等学校计算机科学与技术专业人才专业能力构成与培养》,明确将计算思维列入计算机专业人才的四大专业基本能力之一(计算思维能力,算法设计与分析能力,程序设计与实现能力,系统能力)。
2011年,周以真进一步阐明,计算思维是一个形成问题和制定问题解决方案的思考过程,这些解决方案所采用的形式是一种能够通过信息加工代理有效执行的表达形式。“

Alfred Aho(2011): 计算思维是一个思想过程,涉及描述问题使得它们的解决能够通过计算步骤和算法,能够被信息处理装置有效实现,计算模型是核心概念。

2015年,美国国际教育技术协会(ISTE,2015)解读计算思维是创造力、算法思维、批判性思维、问题解决、合作思维和沟通技能的共同体现。

2017年,Peter J. Denning:计算思维是从不同的科学领域发育和成长的,并不只是从计算机科学中输入的,事实上,计算机科学是逐步地参加到这个思维的变革中来。一场安静但是深刻的已经在所有的科学领域发生,计算赋能的革命通过信息技术带来了各种类型的新的发现。

2. 计算思维过程要素及运用计算思维求解步骤

2011年,美国国际教育技术协会(ISTE)与美国计算机科学教师协会(CSTA)联合发布了计算思维是具有以下特征的问题解决过程:以一种能够使用计算机和其他工具帮助解决问题的方式制定规划;合理组织和分析数据;通过模型和模拟等抽象的表示数据;通过算法思维(一系列有序步骤)实现解决方案自动化;确定、分析和实施可能的解决方案,以实现最有效的过程和资源组合;将问题解决过程推广转化到其它各种各样的问题。规定了计算思维的六个过程要素提出问题、组织和分析问题、表征数据、自动化解决方案、分析和实施解决方案、迁移) ,与九项核心概念和能力( 数据收集、数据分析、数据表征、问题分解、抽象、算法和程序、自动化、模拟、并行化)。

计算思维的两大核心特征是抽象和自动化。运用计算思维进行问题求解一般要经过以下4个步骤:①把实际问题抽象为数学问题并建模,也就是将人对问题的理解用数学语言描述;②模型映射,将数学模型中的变量和规则用特定的符号表示;③用特定计算机语言把解决问题的逻辑分析过程用算法描述,即把解题思路变成计算机指令形式;④计算机根据指令,按顺序自动执行,进行问题实现[5]

目前被广泛认可的计算思维的核心要素及促进计算机类学习和发展的课程基础要素有:抽象和模式概括(包括模型和仿真模拟)、系统性信息处理、符号系统及其表示、控制流程的算法概念、结构化问题分解(模块化)、迭代/递归/并行思维、条件逻辑、效率及性能限制、调试和系统错误监测[5]

3. 计算思维培养的落实
教育部高等学校计算机基础课程教学指导委员会2010年5月在安徽合肥会议中要求将计算思维融入到计算机基础课程中传授,以此培养高素质的研究性人才。2010年7月西安会议发布了《九校联盟( C9)计算机基础教学发展战略联合声明》,旗帜鲜明地把“计算思维能力的培养”作为计算机基础教学的核心任务,明确“大学计算机基础教学的核心任务是培养学生计算思维能力”,标志着计算思维教学面向所有大学生全面展开。

2012 年,教育部教高司函〔2012〕188号文件正式公布,批准“以计算思维为导向的大学计算机基础课程研究”等22个大学计算机课程改革项目,以培养计算思维为重点,推动大学计算机课程改革。

2013年,教育部高等学校大学计算机课程教学指导委员会正式发布了《计算思维教学改革宣言》,进一步明确了计算思维培养在大学计算机基础课程教学中的中心地位,并把计算思维的培养提升到了创新人才培养和国家发展的高度。
2013年,英国教育部将原有的国家课程“信息通用技术”( ICT) 更名为“计算”(Computing),并于2014年9月正式实施。
2013年12月11日,美国非盈利性组织Code. org为配合国家计算机科学教育周( National Computer Science Education Week) 发起了“编程一小时( The Hour of Code) ”倡议和活动,旨在通过采用趣味教学的方式让中小学生了解基本的计算机程序编写,并从小培养孩子们对计算机的兴趣。

2015年英国开放大学发布的《创新教学报告》将计算思维列为“十大创新教学法”之一,认为计算思维将在“教育实践中,尤其是在学校后继续教育中引发重大变革”。计算思维将在人们今后的工作、学习和生活中扮演越来越重要的角色。

2016年,美国计算机科学教师协会在《K-12计算机科学标准》(K-12 Computer Science Standards)中更新了对计算思维界定:计算思维是一种解决问题的方法论,这种方法可从计算机科学的领域扩展到所有学科,为分析和开发能够通过计算方法解决的问题,提供一种独特的方法。计算思维专注于抽象、自动化和分析,是计算机科学更广泛学科的核心元素。

2017新版《普通高中信息技术课程标准》中指出:信息技术学科核心素养由信息意识、计算思维、数字化学习与创新、信息社会责任四个核心要素组成
 2018 年美国国际教育技术协会(ISTE)发布的《教育者计算思维能力标准》针对教育者如何培养计算思维能力提出了具体的标准和指导意见,该标准突出计算思维在信息知识和技能建构中的不可替代性,更强调教育者以“学习者”(Learner)、“领导者”(Leader)、“合作者”(Collaborator)、“设计者”(Designer)和“促进者”(Facilitator)的角色去培养自己和所教学生的计算思维能力,体现教师与学生作为学习共同体的教育理念,强调计算思维对于教师专业发展和学生成长成才的重要性,并为指导、帮助教师和学生如何在跨学科中整合运用计算思维能力提供了参考指南。
4. 关于计算思维培养的不同声音
当然,对于计算思维这一概念也有人提出不同的见解。其中Enrico Nardelli[4]说:将计算思维视为一种新的和不同的东西是有误导性的从长远来看,它对信息学的弊大于利。毕竟,他们不在学校教授“语言思维”或“数学思维”,也不具备这些科目的“知识体系”或“评估方法”。他们只是教授(和评估)英语和数学能力,然后是通过学习英语(或数学)获得各种语言(或数学)的能力,他们除了用于自身之外,还可以在其他学科中找到其他用途。在计算思维和计算之间存在着相同的关系。因此,我们应该探讨中小学信息学的教学内容和能力评价,而忽略计算思维的教学和能力评价
5. 计算思维培养案例[5]

美国科罗拉多大学博尔德分校2019年春季学期CU-Boulder开设的“computer science I -starting computing” (计算机科学I—计算初步,下面将课程简称CSIsc)课程是面向所有学生(包括非计算机专业学生)的计算机类导引课程,学习内容C++。CSIsc课程在开学第一周布置第一次作业,此时,还没有正式进入C++的学习,这次作业的目标就是初步认识计算思维。对此次作业案例进行分析有助于我们学习如何选择和设计作业案例,对学生进行计算思维基本思想的灌输,为学生构建较为完备的计算思维概念体系。

该作业题目是探索机器人Picobot,任务是完全遍历有边界和障碍的房间,起始位置随机。在作业中为学生提供了一个完成Picobot功能的模拟环境,网址是https://www.cs./picobot/,学生可以在这个编程环境中进行Picobot的模拟演练、运行程序和查找bug并修改,直到完成任务为止。这是一个完整的、综合性强的计算思维培养作业案例,其中涉及多项计算思维核心要素的培养。

(1) 抽象和模型思维

机器人Picobot在现实中类比扫地机器人。作业描述首先将机器人Picobot和房间抽象表示,并可视化如图1所示,其中(a)(b)(c)(d)表示4种不同类型的房间。在每个房间中,小方块代表Picobot的随机起始位置,实体部分表示障碍物和边界,空白部分表示要清扫的地面。

抽象思维是人类认识世界的最基本思维。作业示范了如何对实际系统原型进行模型抽象的方法,即保留实际系统原型的本质特征,同时通过抽象和约简,对系统进行准确、简洁的理解和描述。这是计算思维进行问题求解的第一步,经过这一步,原问题演变成“点”在不规则图形的遍历问题。现实中除了扫地机器人外,还有许多问题可用此模型表达,如机器绣花等。

(2) 符号系统和表示思维

为了使问题最终能被计算机自动化完成,需对模型中的相关信息采用计算机能处理的符号表达,如在作业中对周围环境有如下符号约定。

①Picobot只能感知到它紧邻的周围环境。如果不碰到边界或障碍,可由当前位置向4个方向行走:北东西南(NEWS)。②周围环境用相应方向的大写字母表示墙,用“x”表示没墙;如 NxWx表示在北面、西面各有一堵墙,可向东面和南面行走。③除此之外,通配符“*”可以用来表示“Picobot不关心那个位置是否有墙”,如,xE**的意思是“北面没有墙,东面有墙,西面或南面可能有墙,也可能没有墙”。

这一步将抽象模型中的变量/规则用虚拟的符号表示,这是计算思维问题求解的第2个步骤:模型映射。通过作业范例,让学生理解采用符号系统表示的简洁性、严谨性,以及方便计算机进行处理的特性。这部分概念和思维对于初学者很难理解,采用这样的方式引入,简单直观。

(3) 控制流程的程序思维

作业中制定了Picobot行为规则,让学生初步认识程序设计语言,理解程序思维。Picobot行为规则描述如下:

(1)Picobot拥有状态,用数字表示。

(2)状态和周围环境是Picobot做出决策所需要的所有信息。

(3)Picobot根据一组规则移动:当前状态 环境 -> 移动方向 新的状态。

其中移动方向为N、E、W、S,或X,分别表示向北、东、西、南、完全不动。

如,0 x*** -> N 0 #当前状态0,如果北面没墙,则向北走 m,,++ ,状态不变

0 N*** -> X 1 #当前状态0,如果北面有墙保持不动,然后转到状态1

(4)Picobot总是从状态0开始,并且从上到下查询规则,直到找到第一个适用的规则,运行该规则。然后再从头开始,查看规则并从顶部找到第一个适用的规则。

Picobot行为规则构成一种最简单的程序语言,规则描述了程序可分解成基本动作及基本动作的各种组合。如本例中基本动作就是Picobot向某个方向行走一步或保持不动,而基本动作的各种组合及其排序可以最终实现对整个房间的扫描,从而构成完整程序。

通过学习Picobot行为规则,让学生认识到程序是对计算机下达的指令序列,计算机是能够执行各种程序的机器或系统,计算机按照程序控制的基本动作顺序执行,实现复杂的功能。这种基本的指令和程序的思维灌输对学生非常重要。

(4) 递归思维

递归是计算思维的重要特征,其本质是用有限的步骤实现近于无限功能的方法,是问题求解的一种重要思维,使程序简洁和清晰。

在上节Picobot语言规则中有这样的举例:0 x*** -> N 0,初始状态和动作后到达的状态都是0。这条规则可以让Picobot在北面没墙的情况下一直向北走,直到北面碰到边界或障碍为止。这条规则实例对计算思维中非常重要的递归思维进行了非常好的诠释,让学生初步学习并运用这种典型的构造程序的手段,为其今后进一步学习打下良好的基础。

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

完成数据建模、模型映射及定义好程序规则后,接下来的任务就交由学生实现Picobot对房间的遍历。为了引导学生进行实际问题的求解,此次作业为其设定了作业目标和程序实践方法,学生可依据目标和实践方法的提示很好地完成任务。

作业目标:①把大的问题拆分成子问题处理;②编写一个算法来解决特定的问题,然后将该算法转换成特定编程语言的程序(在本例中是Picobot行为规则);③为算法的每一步编写清晰、简洁的文档;④运行并查找程序中的bug,修复bug,然后再次测试。

程序实践方法:①从制订策略开始,用简明扼要的叙述总结采用的方法。例如,要遍历房间(a)可采用的方法描述:“先将Picobot发送到北墙,然后发送到西北角,然后Picobot由西向东扫描……直到完成对房间的遍历”。②为算法的每个步骤/规则写注释。

其中,作业目标的设定引导学生学习程序设计问题求解的基本步骤和方法;程序实践方法教会学生怎样对实际问题进行具体的分析和制定策略。这次作业还引导学生将一个大的、难解决的问题重新阐释成简单的、已有解决方案的小的问题,这种问题结构化分解的方法是处理庞杂任务或设计巨大复杂系统时采用的核心方法和思维,对学生今后处理实际问题至关重要。我们要求学生在编写算法的同时,为算法撰写清晰、简洁的文档和注释,为日后养成良好的编程习惯打下基础。

(6) 效率及性能限制

这次作业还让学生初步理解算法效率的概念,为学生设定了算法效率要求。效率要求如下:从状态数量和规则数量考虑解决方案的效率。认可的解决方案是遍历(a,b)房间,每个遍历不能超过16条规则。如果超过,找重叠代码,将重叠代码去除。

效率要求中引导学生从状态数量和规则数量考虑算法效率,使学生初步学习如何进行算法效率的衡量,并通过限定规则的数量指导学生对算法进行简单优化。

(7) 调试和系统错误监测

此次作业的完成须在模拟环境中运行通过,因此学生必须经过编写Picobot程序、运行、查找错误、修改等一系列程序调试环节。这是一个不断试错的过程,通过分析和查找问题的根源,确定代码错误位置,不断修改,直到成功为止。在这个过程中,学生分析问题和解决问题的能力得到极大训练。

(8) 规律探寻、创造性思维

作业要求遍历房间(a,b)是必选题目,遍历房间(c,d)可额外加分,供学有余力的学生完成。除此之外,作业还提供了更为复杂的房间,如图2所示,为高水平同学提供拓展训练,目的是培养学生在解决复杂问题时规律探寻的方法,激发学生的创造性思维。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多