计算思维是什么,如何培养

开通VIP,畅享免费电子书等14项超值服

首页

好书

留言交流

下载APP

联系客服

2023.04.25贵州

周教授认为计算思维代表一套普适的态度和技能,每个人都应该学习、使用,而不仅仅是计算机科学家。她在文中将日常生活与计算机领域的问题做了类比:清晨你的女儿上学前将当天要用的东西装进书包,这是预取和缓存;当你的儿子丢了连指手套,你建议他从原路返回去找,这是回溯;在超市里选择哪个收银台排队?这是多服务器系统的性能建模。

周教授认为,当计算思维融入每个人的生活中时,算法和先决条件这类专业词汇成为日常生活用语,不确定性和垃圾收集将具有计算机科学家所使用的含义。

计算思维是STEM教育的重要组成部分。进入21世纪后,STEM教育在全球范围内日益受到高度重视,多个国家也将“计算思维”加入教育体系中,提升到战略高度。2017年,新加坡将计算思维称为国家能力;到2018年,超过20个欧洲国家将编程和计算思维集成到他们的课程体系中;2018年,美国总统行政办公室下属的国家科学技术委员会发布了题为《制定成功之路:美国STEM教育战略》的报告。

在这篇政府文件中,“计算思维”一词出现了28次,并且强调让计算思维成为所有教育的组成部分;2022年,中国教育部印发了《义务教育课程方案和课程标准(2022年版)》,指出信息科技课程要培养的核心素养,主要包括信息意识、计算思维、数字化学习与创新、信息社会责任。

上述不同国家的文件从多个角度对计算思维做了定义和描述。比如,在中国教育部制定的《义务教育信息科技课程标准(2022年版)》中,对计算思维做了如下描述:计算思维是指个体运用计算机科学领域的思想方法,在问题解决过程中设计的抽象、分解、建模、算法设计等思维活动。具备计算思维的学生,能对问题进行抽象、分解、建模,并通过设计算法形成解决方案,并将其迁移运用于解决其他问题。

美国STEM教育战略的政府文件中引用了周以真教授给出的定义:计算思维是制定问题及其潜在解决方案的思维过程,其要点在于解决方案可以被信息处理代理(Agent)有效地执行。这里的代理可以是人,也可以是机器,或者通常是两者的组合。中国教育部的描述深入到了计算思维所用到的具体工具。美国政府文件所引用的定义更强调解决方案的可执行性,并明确指出执行的过程可能包含人机合作。

我们可以根据前面的讨论,对计算思维在概念层面做个总结:“计算思维”一词最早出现在1980年,但其所代表的概念远早于此;计算思维是将复杂问题分析清楚,将问题的解决方案描述到能够有效执行程度的思维过程;通过计算思维产生的解决方案可以由人来执行,也可以由机器来执行,或由人和机器协同完成;计算思维是计算机科学家提出来的,但其应用涵盖所有领域,包括日常生活;计算思维是可以从小培养的,是终身受用的;包括中国在内的很多国家,已经将计算思维的培养纳入教育体系当中,有些国家还将其提升到国家战略的高度。

前面的讨论概括起来就是计算思维是解决问题的思维过程。现实世界里可以利用计算思维解决的问题林林总总,各式各样解决问题的方法有哪些共性?或者说计算思维包含哪些具体的思维活动?对于这个问题,人们比较一致的看法是计算思维包含四个基础方法——问题分解、模式抽象、算法设计和模式识别。

将大问题分解为更易于理解分析的相对小的问题,对每个小问题各个击破,是解决复杂问题的有效手段。比如,管理运营一所学校是个复杂问题,我们可以将这个问题分解为招生、教学、后勤等若干子问题。通过对每个子问题的深入分析,我们可以对全局有更好的理解和把控。问题的分解可能是多层次的,比如,学校的教学问题可以进一步分解为不同科目的教学问题。问题分解的维度也可能是多样化的,比如,教学问题除了可以按照科目分解,也可以按照学生的年级来分解,或考虑如何给优等生和学习有困难的学生分别提供相应的支持和帮助。在计算机科学领域,复杂系统的分解通常会以提升子系统内部的一致性和完整性、减少子系统之间的依赖性为原则。这个原则在其他领域也适用。

抽象是提取事物的本质特征,去除非本质特征的过程。在中小学阶段,数学是学生接触抽象概念最多的一个学科。像三角形、长方形的概念,变量和方程等都是从物理世界中提取出来的抽象概念。抽象是人类思维的重要工具,在很多学科领域都有专业应用。在计算机科学领域,面向对象的编程将对象的状态数据和对数据进行操作的代码封装在一起,抽象为一个“类”;计算机系统通常被抽象成底层的硬件、中间层的操作系统和上层的应用,等等。除此以外,抽象在文、史、理、工等很多领域都有专业应用。

算法的执行可以由机器完成,也可以由人来完成,或者人机协同完成。

对中小学生来说,以上四项思维能力需要经过多年的学习和实践逐步培养提升。

我们先来看一个简单例子。我们知道二分查找(BinarySearch)是一个常用的计算机算法,用于在一个有序的序列中找到某个目标元素的位置。其基本思想是将目标元素与序列中间的元素做比较,如果不相同,我们可以忽略掉原始序列里一半的元素,在剩下的一半中继续将目标元素与中间元素做比较,依此类推,直至找到目标元素的位置。这个算法很有效,其复杂度是O(logn),n是序列的长度。

如果按照传统的方法讲授这个算法,学生会觉得抽象、枯燥。另外,学生还需掌握对数和算法复杂度的概念并学习O()这个符号的含义,这对很多中小学生来说挑战太大。我们可以换个方式让学生去思考这个问题,比如以下几种游戏的方式。

(1)猜数游戏。东东和聪聪在玩猜数游戏。聪聪说,我想一个0~30之间的整数,你猜猜是几。你每猜一个数,我会告诉你是猜大了,猜小了,或猜对了。你最多有5次机会。请问东东能保证在5次之内猜中那个数吗?

(3)好学的猫头鹰。猫头鹰喜欢读书。这天他在读一本600页的大部头,读了一部分后有些累了,就将书摊开放在身边,午睡一会儿。调皮的猴子爬到猫头鹰在树上的小屋里,趁他熟睡时将书合上了。猫头鹰醒来后不记得自己读到第几页了,很生气。但他转念一想,我可以在一分钟之内翻到书的任意一页,并判断出这是不是我正在读的那页,或者这页我是否读过。我用一个巧妙的办法,可以在10分钟内找到我读的那页。你知道猫头鹰是怎么做的吗?

从上面几个例子可以看出,专业知识是可以通过生动有趣的任务设计启发学生去思考、探索、学习的。要做好这项工作,我们需要系统化地设计知识体系,并确定一套任务设计的标准。

前面二分查找的例子对应上面知识体系里第(5)部分的查找算法,对应的思维技能是算法设计。这个知识体系会在实践中持续更新。

任务的设计是一项有难度的工作。每项任务既要满足专业性,也要适合学生的特点。在专业性方面,每项任务要明确对应知识体系里的知识点及前面讨论的思维技能。对于比较复杂的任务,完成任务可能需要用到多种思维技能,比如要依次进行问题分解和算法设计。

为保证每项任务能让学生理解,任务的描述要使用学生容易理解的语言,不能不加解释直接使用专业术语。任务的难度要适当,与学生的年龄相匹配,同时要具备一定的挑战性。为激发学生的学习兴趣,每项任务要生动有趣,最好放在学生熟悉、喜欢的场景中进行描述。这个场景可以来自于生活,也可以来自于童话世界。每项任务最好都配有生动的图片。如果任务在计算机上完成,还可以加上人机交互,更好地支持学生的探索。

要持续设计出高质量的任务,需要让具有丰富教学经验的教师和计算机专业人士组成团队,通过系统化的流程进行合作。

THE END
1.10大计算机经典算法「建议收藏」腾讯云开发者社区3. 若队列为空,表示整张图都检查过了——亦即图中没有欲搜寻的目标。结束搜寻并回传“找不到目标”。 4. 重复步骤2。 算法八:Dijkstra算法 戴克斯特拉算法(Dijkstra’s algorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出。迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到https://cloud.tencent.com/developer/article/2089934
2.算法到底是什么?(小白必读)问题不同,解决的思路和采取的方法与步骤就有针对性,所以对应的算法也各不相同。但是,各种算法有如下共同之处:首先计算机要有操作对象,通过输入,给予计算机问题所涉及的对象;最后要能得到运行结果,即有输出;在输入与输出之间是具体的方法和步骤,这些方法和步骤必须是确定的、正确的、有限的、有效的、通用的。https://baijiahao.baidu.com/s?id=1794500673477721607&wfr=spider&for=pc
3.计算机算法有哪些编程:算法的定义是常用算法有计算机算法有哪些 A.编程:算法的定义是常用算法有 算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。算法+数据结构=程序,求解一个给定的可计算或可解的问题,不同的人可以编写出不同的https://www.ultimate-communications.com/zh/system_418763
4.python的算法有哪些python常用算法有哪些python的算法有哪些 python常用算法有哪些 1. 引言 据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。虽然不知道为何要将这五个算法归为最常用的算法,但是毫无疑问,这五个算法是有很多应用场景的,最优化问题大多可以利用这些算法解决。算法的本质就是解决问题。当https://blog.51cto.com/u_16213559/6974323
5.Alibaba最新1000多道Java面试题汇总详解,收藏起来慢慢刷!我分享的这份春招 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝https://maimai.cn/article/detail?fid=1728969401&efid=esjJLvGGL4fAr1LArgq_cQ
6.计算机算法的五个特性是什么?常见问题没有输出的算法是毫无意义的; 可行性(Effectiveness) 算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算步骤都可以在有限时间内完成(也称之为有效性)。 以上就是计算机算法的五个特性是什么?的详细内容,更多请关注php中文网其它相关文章!https://www.php.cn/faq/464488.html
7.金字塔模板匹配算法,模板匹配算法有哪些,C,C++**金字塔模板匹配算法详解** 模板匹配是计算机视觉领域中一种重要的图像分析技术,它主要用于寻找一个小型图像(模板)在大型图像中的最佳匹配位置。在实际应用中,如人脸识别、物体检测、图像检索等场景,模板匹配都有广泛的应用。本文将深入探讨金字塔模板匹配算法及其在C++和OpenCV库中的实现。 ### 1. 模板匹配基础 模https://download.csdn.net/download/weixin_42696333/22364212
8.比特币挖矿软件有哪些?比特币挖矿软件推荐区块链技术区块链比特币挖矿是一种通过计算机处理复杂算法来验证比特币交易并获取新的比特币的过程,选择一个好的挖矿软件是非常重要的,它可以帮助您提高挖矿效率,并获得更多的比特币,那么,比特币挖矿软件有哪些?以下是我对比特币挖矿软件的介绍 比特币挖矿是通过计算机硬件解决数学难题以验证和记录比特币交易的过程,而讲到比特币挖矿除了https://www.jb51.net/blockchain/909622.html
9.100个网络基础知识普及,看完成半个网络高手有7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。 3)什么是骨干网? 骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道。 4)什么是 LAN? LAN 是局域网的缩写。它是指计算机与位于小物理位置的其他网络设备之间的连接。 https://www.ahstu.edu.cn/wlzx/info/1115/2156.htm
10.韩信竟是数学大师?中国古代数学启发计算机加密算法时至今日,中国剩余定理已经成为了很多计算机加密算法的基础,它的应用范围已经超乎你的想象。 影响当今计算机算法 外媒Quantamagazine在一篇名为《古代战争计策是如何影响当代数学》的文章中也提到:中国剩余定理对现代数学、计算机算法、天文学等领域都有很大的启发意义。 https://www.thepaper.cn/newsDetail_forward_14592114
11.算法概述著名计算机科学家沃思提出了下面的公式:程序 = 数据结构 + 算法; 实际上,一个程序应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言来表示。因此,可以用下面的公式表示:程序 = 算法 + 数据结构 + 程序设计方法 + 语言和环境; 常见算法有许多种 https://www.jianshu.com/p/8c8d20a9bde8
12.计算科学:什么是算法?如何编写代码算法?学习如何驾驶汽车意味着学习很多很多的道路规则。我们在驾驶时执行的大多数操作都可以被认为是算法。通过侧方停车、改变车道甚至停车的正确过程都有一组特定的步骤,使它们成为算法。 您还能想到哪些其他例子? 算法 五、算法的类型 计算机科学算法的最基本类型是: https://kidscodes.cn/9038.html