1982年诺贝尔物理奖得主肯尼斯·威尔逊在他的获奖演讲中提到计算在他的工作中扮演的重要角色,他认为计算是所有科学的研究范式之一,区别于理论和实验,所有的学科都面临算法化的“巨大挑战”。所有涉及自然和社会现象的研究都需要借助计算,使用计算模型做出新发现和推进学科发展。他的工作和对于计算方法的大力推荐,激发了人们对于计算科学的认识和重视。 Alfred Aho(2011): 计算思维是一个思想过程,涉及描述问题使得它们的解决能够通过计算步骤和算法,能够被信息处理装置有效实现,计算模型是核心概念。 2015年,美国国际教育技术协会(ISTE,2015)解读计算思维是创造力、算法思维、批判性思维、问题解决、合作思维和沟通技能的共同体现。 2017年,Peter J. Denning:计算思维是从不同的科学领域发育和成长的,并不只是从计算机科学中输入的,事实上,计算机科学是逐步地参加到这个思维的变革中来。一场安静但是深刻的已经在所有的科学领域发生,计算赋能的革命通过信息技术带来了各种类型的新的发现。 2. 计算思维过程要素及运用计算思维求解步骤 2011年,美国国际教育技术协会(ISTE)与美国计算机科学教师协会(CSTA)联合发布了计算思维是具有以下特征的问题解决过程:以一种能够使用计算机和其他工具帮助解决问题的方式制定规划;合理组织和分析数据;通过模型和模拟等抽象的表示数据;通过算法思维(一系列有序步骤)实现解决方案自动化;确定、分析和实施可能的解决方案,以实现最有效的过程和资源组合;将问题解决过程推广转化到其它各种各样的问题。规定了计算思维的六个过程要素( 提出问题、组织和分析问题、表征数据、自动化解决方案、分析和实施解决方案、迁移) ,与九项核心概念和能力( 数据收集、数据分析、数据表征、问题分解、抽象、算法和程序、自动化、模拟、并行化)。 计算思维的两大核心特征是抽象和自动化。运用计算思维进行问题求解一般要经过以下4个步骤:①把实际问题抽象为数学问题并建模,也就是将人对问题的理解用数学语言描述;②模型映射,将数学模型中的变量和规则用特定的符号表示;③用特定计算机语言把解决问题的逻辑分析过程用算法描述,即把解题思路变成计算机指令形式;④计算机根据指令,按顺序自动执行,进行问题实现[5]。 目前被广泛认可的计算思维的核心要素及促进计算机类学习和发展的课程基础要素有:抽象和模式概括(包括模型和仿真模拟)、系统性信息处理、符号系统及其表示、控制流程的算法概念、结构化问题分解(模块化)、迭代/递归/并行思维、条件逻辑、效率及性能限制、调试和系统错误监测[5]。 2012 年,教育部教高司函〔2012〕188号文件正式公布,批准“以计算思维为导向的大学计算机基础课程研究”等22个大学计算机课程改革项目,以培养计算思维为重点,推动大学计算机课程改革。 2015年英国开放大学发布的《创新教学报告》将计算思维列为“十大创新教学法”之一,认为计算思维将在“教育实践中,尤其是在学校后继续教育中引发重大变革”。计算思维将在人们今后的工作、学习和生活中扮演越来越重要的角色。 2016年,美国计算机科学教师协会在《K-12计算机科学标准》(K-12 Computer Science Standards)中更新了对计算思维界定:计算思维是一种解决问题的方法论,这种方法可从计算机科学的领域扩展到所有学科,为分析和开发能够通过计算方法解决的问题,提供一种独特的方法。计算思维专注于抽象、自动化和分析,是计算机科学更广泛学科的核心元素。 美国科罗拉多大学博尔德分校2019年春季学期CU-Boulder开设的“computer science I -starting computing” (计算机科学I—计算初步,下面将课程简称CSIsc)课程是面向所有学生(包括非计算机专业学生)的计算机类导引课程,学习内容C++。CSIsc课程在开学第一周布置第一次作业,此时,还没有正式进入C++的学习,这次作业的目标就是初步认识计算思维。对此次作业案例进行分析有助于我们学习如何选择和设计作业案例,对学生进行计算思维基本思想的灌输,为学生构建较为完备的计算思维概念体系。 该作业题目是探索机器人Picobot,任务是完全遍历有边界和障碍的房间,起始位置随机。在作业中为学生提供了一个完成Picobot功能的模拟环境,网址是https://www.cs./picobot/,学生可以在这个编程环境中进行Picobot的模拟演练、运行程序和查找bug并修改,直到完成任务为止。这是一个完整的、综合性强的计算思维培养作业案例,其中涉及多项计算思维核心要素的培养。 机器人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行为规则,让学生认识到程序是对计算机下达的指令序列,计算机是能够执行各种程序的机器或系统,计算机按照程序控制的基本动作顺序执行,实现复杂的功能。这种基本的指令和程序的思维灌输对学生非常重要。 递归是计算思维的重要特征,其本质是用有限的步骤实现近于无限功能的方法,是问题求解的一种重要思维,使程序简洁和清晰。 在上节Picobot语言规则中有这样的举例:0 x*** -> N 0,初始状态和动作后到达的状态都是0。这条规则可以让Picobot在北面没墙的情况下一直向北走,直到北面碰到边界或障碍为止。这条规则实例对计算思维中非常重要的递归思维进行了非常好的诠释,让学生初步学习并运用这种典型的构造程序的手段,为其今后进一步学习打下良好的基础。 完成数据建模、模型映射及定义好程序规则后,接下来的任务就交由学生实现Picobot对房间的遍历。为了引导学生进行实际问题的求解,此次作业为其设定了作业目标和程序实践方法,学生可依据目标和实践方法的提示很好地完成任务。 作业目标:①把大的问题拆分成子问题处理;②编写一个算法来解决特定的问题,然后将该算法转换成特定编程语言的程序(在本例中是Picobot行为规则);③为算法的每一步编写清晰、简洁的文档;④运行并查找程序中的bug,修复bug,然后再次测试。 程序实践方法:①从制订策略开始,用简明扼要的叙述总结采用的方法。例如,要遍历房间(a)可采用的方法描述:“先将Picobot发送到北墙,然后发送到西北角,然后Picobot由西向东扫描……直到完成对房间的遍历”。②为算法的每个步骤/规则写注释。 其中,作业目标的设定引导学生学习程序设计问题求解的基本步骤和方法;程序实践方法教会学生怎样对实际问题进行具体的分析和制定策略。这次作业还引导学生将一个大的、难解决的问题重新阐释成简单的、已有解决方案的小的问题,这种问题结构化分解的方法是处理庞杂任务或设计巨大复杂系统时采用的核心方法和思维,对学生今后处理实际问题至关重要。我们要求学生在编写算法的同时,为算法撰写清晰、简洁的文档和注释,为日后养成良好的编程习惯打下基础。 这次作业还让学生初步理解算法效率的概念,为学生设定了算法效率要求。效率要求如下:从状态数量和规则数量考虑解决方案的效率。认可的解决方案是遍历(a,b)房间,每个遍历不能超过16条规则。如果超过,找重叠代码,将重叠代码去除。 效率要求中引导学生从状态数量和规则数量考虑算法效率,使学生初步学习如何进行算法效率的衡量,并通过限定规则的数量指导学生对算法进行简单优化。 此次作业的完成须在模拟环境中运行通过,因此学生必须经过编写Picobot程序、运行、查找错误、修改等一系列程序调试环节。这是一个不断试错的过程,通过分析和查找问题的根源,确定代码错误位置,不断修改,直到成功为止。在这个过程中,学生分析问题和解决问题的能力得到极大训练。 作业要求遍历房间(a,b)是必选题目,遍历房间(c,d)可额外加分,供学有余力的学生完成。除此之外,作业还提供了更为复杂的房间,如图2所示,为高水平同学提供拓展训练,目的是培养学生在解决复杂问题时规律探寻的方法,激发学生的创造性思维。 |
|