分享

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

 湖城信息技术 2023-04-25 发布于贵州

计算思维的来源、演变及定义



“计算思维”一词最早出现在1980年,当时美国麻省理工学院教授西蒙·派珀特(Seymour Papert)在他的著作《头脑风暴——儿童,计算机,及强大的想法》(MINDSTORMS——Children, Computers, and Powerful Ideas)一书中首先使用了计算思维(Computational Thinking)这个词。

2006年3月,时任美国卡内基·梅隆大学计算机系主任周以真(Jeannette M. Wing)教授在计算机期刊Communications of the ACM上发表了标题为《计算思维》的文章,将这个词推到了计算机教育领域的前沿。

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

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

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

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

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

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

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

走近计算思维



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

1
问题分解

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

2
模式抽象

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

3
算法设计

在数学和计算机科学领域,算法是用于解决某个问题或完成某项计算的一系列定义清晰的指令。这些指令的执行要在有限的时间内完成。算法的概念在古代就存在,古巴比伦人在距今约4000年前就在他们当时使用的60进制数字系统上发明了计算除法的算法。近年来,随着计算思维教育的普及,“算法”一词的含义已经扩展为问题的解决方案。

算法通常是建立在某个抽象模型之上的。比如,简单行程问题的模型是物体在连接两点之间的线段上做匀速运动,物体从一点运动到另一点的时间可以通过“时间 = 距离÷速度”来计算。再比如,在计算机领域被广泛研究的排序算法是对一个列表里有顺序定义的元素进行操作。对于由计算机来执行的算法,算法的描述通常会用到流程图或伪代码。

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

4
模式识别

模式识别是找出不同问题之间的共性,基于共性建立抽象模型的过程。通过算法设计在抽象模型中找出的解决方案可以在符合模型的所有问题中重复使用。模式识别还意味着在遇到新问题时能够识别出这个新问题与某个已有的抽象模型相匹配,利用已有的解决方案快速解决问题。比如,人们从生活中总结出行程问题的时间计算公式:时间 = 距离÷速度,学生掌握后就可以快速解决很多同类问题,如计算小明骑车去学校的时间,或计算一辆北京到上海的直达高铁列车的行驶时间。对于复杂问题,识别出当前的问题与某个现有的算法模型相匹配并不容易,这种识别能力是建立在对问题和算法模型的充分理解之上的。

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

计算思维的培养



1
计算思维的培养方式

计算思维的培养分为两个部分,系统化学习和项目实践。系统化学习为学生构建多个领域的基础知识体系,项目实践培养学生解决实际问题及团队合作能力,两者缺一不可。近年来,国外很多创新性的教育探索都大大增加了基于项目的学习(ProjectBased Learning, PBL),甚至将PBL作为主要的教学手段。传统的基于项目的学习对教师的要求高,这主要是因为项目规模比较大,项目持续时间从几天到几个月,开放性强,教师需要非常熟悉相关的基础知识及完成项目的多种可能方法及路径,并能够根据学生水平、进展随时调整对学生的辅导方式。另外,对学生完成项目的考核主观性强,难以做到客观公正。

基于国内的现实情况,计算思维的培养需要满足以下几个条件。一是有系统化的知识体系作为指导,系统化的知识体系可以大大提升课程的科学性与合理性。二是学生的学习过程以解决问题为主,思维能力是在解决问题的过程中提升的,而不是通过单向的知识传授来完成的。在暂时不具备大规模实施项目制学习的条件时,我们可以为学生设计出众多的小规模任务让学生完成。根据教学或评测的要求,每个任务的完成时间可以在几分钟到几小时之间,且任务的设计与知识体系或思维技能明确关联。这种小规模的任务可以大大降低对教师的要求,也可对学生的学习成果做公平有效的评测。三是任务的设计要符合学生的认知水平。面向中小学生,任务的设计要生动有趣,且具有一定的挑战性。

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

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

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

(2)查电线。小猪和小狗是好朋友,他们的家相隔100米,为了联系方便,他们决定在两个房子之间拉一条电话线。在动物王国里只能找到长度是1米的电线,他们就花了一个夏天的时间将100根电线连起来,电话开通后他们非常开心。这100根电线有99个接头。一天调皮的鹦鹉飞到其中的一个接头上跳舞,将接头踩坏了,然后悄悄地飞走了。小狗发现电话不通,就跑到小猪家说,你待在家里,我拿着电话机和梯子,爬到一个接头那里,从那个接头的地方给你打电话。如果电话不通,坏的接头就在我爬的地方和你家之间,否则就在我爬的地方和我家之间。这样试几次就能找到坏的接头了。因为小狗自己架梯子爬上爬下很麻烦,他想减少爬梯子的次数。你能帮小狗设计个策略让他以最少的爬梯子次数找到坏的接头吗?

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

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

2
知识体系

计算思维来源于计算机科学的研究及工程实践,这个领域内的知识组成了任务设计所需的知识体系的大部分内容。除此之外,数学和逻辑思维的内容也是知识体系的重要组成部分。这个体系包含以下几部分:(1)计算机基础及理论:计算机基础知识、布尔代数、逻辑电路、数与进制转换、集合、排列组合、概率、数论等;(2)信息表示与编码:字符、数值及图像的编码等;(3)计算机语言及编程:程序执行的流程控制(顺序执行、分支、循环)、计算及数据处理、程序的封装与模块化等;(4)数据结构:线性数据结构(数组、链表、队列、栈等)、非线性数据结构(集合、树、图、哈希等);(5)算法:算法策略、查找、排序、哈希算法、基于树的算法、基于图的算法、博弈等;(6)计算机系统与应用:计算机软硬件系统、信息与通信、计算机网络、数据库、数据挖掘、人工智能等;(7)观察与推理:平面图形、立体图形、图形推理、数字推理、思维趣题等。

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

3
任务标准

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

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

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

总 结



本文描述了计算思维的来历、内涵及在教育领域的发展。近年来,计算思维的培养已经在世界上被多个国家提高到了国家战略的高度,但计算思维应该如何培养,如何评测依然是一个需要深入研究和探讨的问题。基于系统化的知识体系,生动有趣的任务设计,让学生在解决问题的过程中进行学习探索是适合国内现状的计算思维培养方式。这种方式结合系统化知识传授和项目式学习的优点,适合所有的学生和教师参与。这种方式可以与互联网及教育科技相结合,让学生在生动有趣的人机交互中提升分析问题和解决问题的能力。在少儿编程领域,Scratch编程平台让全球超过200个国家和地区的儿童开始接触和学习计算机语言和编程。但计算机科学及其相关领域内还有大量的理论、算法及应用实践还不能让大众来直接学习。我们可以预见在不久的将来,一个优秀的计算思维学习平台可以让低龄儿童开始学习领悟这些专业成果,并在学习的过程中大大提升思维技能。


作者系蓝桥青少教师赋能项目STEM86.COM负责人

内容来源 |《中小学信息技术教育》2023年第2-3期



排版 | 伊   丹       初审 | 徐靖程

复审 | 卢秋红       终审 | 雷   玲


我就知道你“在看”

图片

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多