计算思维是一项始于2006年的K-12教育运动,它为大学预科学校制定了一套教授基础计算知识的课程。在说服K-12学校的教师和董事会采用计算机课程方面,它比以前的计算机读写或流利性运动要成功得多。学习用算法解决问题被广泛认为对学生有价值。数以百计的CT项目在世界各地开花结果。
到2010年,该运动确定了CT的定义,可以解释为“设计计算,让计算机为我们工作。”推荐的K-12课程范围很窄,旨在教授新手算法、编程和使用计算机的基础知识。一个经常被引用的概述列出了九个基本概念作为CT的核心2:
抽象一直被认为是首要的原则。在2021年的图灵讲座中,Alfred Aho和Jeffrey Ullman强调了抽象在编程语言和编译器设计中的重要性。1
上面概述的CT故事非常适合让年轻的学生开始学习编程和算法思维的强大原理。不幸的是,这个故事的成功也变成了一种不利因素,因为它展示了一种计算机科学的观点,其中许多计算专业人员所熟悉的思想都缺失了。
我们称K-12的基本故事为“CT初学者”。我们介绍了高级故事,“专业CT”,为专业从业者在日常使用中的所有思考和设计实践。4现在是时候停止把计算思维的整个故事合并为一个初学者,而扩展到从初学者到专业人士的整个范围。
有几个理由可以证明这种扩张是健康的。首先,该运动的最初目标之一是描述计算机科学家是如何思考的。基本的CT相对容易学习,但它很少揭示计算机专业人员的高级思维。前面列出的大多数基本实践并不是计算所独有的——它们在数学、科学和工程中已经出现了几个世纪。5许多推荐给K-12年级的教学实践大量使用了通用的逻辑谜题和游戏戏弄,这引起了孩子们的兴趣,但没有说明使计算对其他学科具有吸引力的独特思维和实践方式。当有大量的谜题和游戏例子能够说明计算的独特功能时,就没有理由使用通用逻辑谜题了,就像在CS Unplugged项目中所做的那样。3.目前的CT故事并没有达到最初的目标之一。
其次,基础CT非常关注如何使用列出的概念来编写好的程序(“编码”)。这很好:编程是CT的核心。但是这种对编码的过度关注强化了公众对计算的普遍误解,通常被称为“CS =编程”。为了消除这种观念,我们在上世纪90年代进行了长期而艰苦的斗争。令人不安的是,它作为基本CT中所固有的狭隘计算观点的一个不知情的结果而复活。
第三,基础CT对现实世界中的大型程序、系统、网络和用户社区的思考和设计实践基本上保持沉默。它没有描述计算专业人员如何解决问题、应对威胁、处理问题、抓住机会或交流实践。它为公众——包括学校老师、家长和政策制定者——描绘了一个狭隘的、技术性的、非人文主义的计算机职业形象。
基本的CT相对容易学习,但它很少揭示计算机专业人员的高级思维。
第四,现代计算很大程度上依赖于仿真和建模。仿真建立真实过程的信息模型,使用计算机研究它们的行为,然后对真实过程进行推断。模拟已经成为计算科学专业人员非常强大的工具。由于这种新的强调,CT的工作释义定义得到了扩展:“CT是一种心理技能和实践,用于(1)设计计算,使计算机为我们工作,(2)将世界解释为一个复杂的信息过程。”
大多数K-12课程的规范关注CT的第一个方面,对第二个方面几乎没有说。在本专栏的其余部分中,我们将为专业人士提供一些CT示例,并评论为什么初学者的概念中没有隐含这些示例。这些先进的实践是在专业人员致力于设计和构建可靠软件、评估系统性能、构建分布式网络和操作系统以及设计用户界面的工作中出现的。
以下是专业人士使用的先进CT的例子。
神经网络是当今许多流行的人工智能服务和工具的引擎。一些基础CT课程提到,神经网络为Siri和Alexa等交互式机器人提供了动力,为Facebook照片中的朋友添加标签,在手机上运行面部识别,或者推动TikTok展现每个用户都会喜欢的视频的神奇能力。一些人还提到,神经网络是经过训练的,而不是程序化的。但是基础CT并没有提到专业人员在试图使神经网络变得可靠时所面临的许多挑战。专业人员设计训练方案,收集和整理训练数据,测试训练网络的可靠性,与其他软件和用户界面进行工作和集成。他们了解驱动神经网络的张量芯片,了解其内部算法可能产生的错误类型,了解如何改进训练算法,了解网络对输入的微小变化有多敏感。他们还参与研究如何消除网络从数据中继承的偏差,如何解释网络不合理的输出,或者如何评估网络在无人驾驶汽车等关键系统中使用的安全性。幸运的是,想要以玩具的规模尝试这些想法的年轻学习者可以使用谷歌的教学机器,而不必等待它们被纳入基础CT课程。
计算复杂度是计算的一个独特方面。它的特点是在计算机上解决各种各样的问题所需的时间和存储资源。基本CT可能会提到,有些算法比其他算法更容易——例如,在已排序的堆中找到一个项目要比对堆进行排序容易得多。它可能会讨论一些问题,例如设计一个最优的交通系统,对于任何已知的计算机来说都是太难了。但基本CT并没有提及np完全问题的全部内容,也没有提到为寻找困难问题的近似解而设计了什么样的启发式方法,或者需要什么样的机器和算法来打破现有的公钥加密。量子计算机的工作方式可能在合理的时间内解决其中一些问题,但对于基本CT来说,这太先进了。
优秀的设计师结合了人类洞察力、社会语用学、组织理解和机器控制。
软件工程从专业人士的角度来看待软件开发。基本CT主要是关于所谓的“小型CT”编程方法——针对单一类型用户使用的小型程序。CT-in-the-small适合初学者程序员学习如何为自己的程序设计和编写干净的代码。但是大型软件系统的设计人员依靠设计和项目实践来管理由许多程序员以许多版本发布的许多模块组成的系统的开发。他们关心的问题包括互操作性、跨平台可移植性、跨版本兼容性、瓶颈以及理解如何为数千甚至数百万用户设计。这种“CT-in- large”在基础CT中是无法教授的。
操作系统和网络。这些复杂的系统是计算的基本基础设施。它们为云计算、商务和社交网络等服务提供平台和连接。他们也是犯罪分子窃取数据和破坏关键系统的目标。基本CT提到了这些技术的存在,但很少提及其先进的概念。基础CT可能告诉我们,根据抽象和分解,这些大型系统是模块和接口的集合——在现实中,它们是持续运行的合作动态过程或自主代理的“社会”。这些社会包括许多大型子系统,每个子系统都是一组复杂的抽象,并依赖于它们的内核进行正确的协调和可靠的操作。它们支持Web和云。
尽管关于如何在学校教授计算机的研究已经进行了半个多世纪,但向孩子们教授计算机概念仍然是一个巨大的挑战。
分布式计算和性能建模。大多数用户作业需要来自计算机网络中的多个服务器的服务。如果计算机系统和网络不能在合理的时间内提供响应,不能跟上用户作业的大量工作负载,那么它们就是无用的。基本CT几乎没有涉及需要多种服务的工作结构,也没有涉及瓶颈服务器上的竞争和拥堵的影响。分布式系统的专业性能分析人员依赖于排队网络模型来回答吞吐量和响应时间问题,并配置具有足够容量的系统来为用户提供良好的服务。
交互设计是高级CT专业人员的关键技能之一。计算机没有直觉或能力去关心用户。智能系统的错觉来自于设计者在理解如何设计其行为看起来“智能”的软件方面的专业知识。智能技术是设计的胜利。以iPhone为例:它的成功不仅来自其强大的技术实力,还来自其对用户身份和时尚宣言的支持。优秀的设计师结合了人类洞察力、社会语用学、组织理解和机器控制。伟大的设计师理解社区的社会实践,认识到不同社会现实中的价值和价值,倾听关注,认识和协调情感和情绪,并在构建大型系统时识别伦理和道德问题。
尽管关于如何在学校教授计算机的研究已经进行了半个多世纪,但向孩子们教授计算机概念仍然是一个巨大的挑战。它将使计算机教育研究人员在未来几十年里忙个不停。我们主张CT课程开发者应该关注两件事。
首先,我们主张教师们利用K-12课程中来之不易的计算时间来教授我们学科特有的实践,而不是重复一般的大脑谜题、数学练习或感性推理问题。我们担心,在为学校开发CT课程的兴奋中,可能引入了太多的通用概念,以牺牲计算机本身的学科概念、思想、技能和实践为代价。这种情况应该改变。
其次,我们主张扩大CT的公众面,以涵盖从初学者到专业人士的CT见解的丰富光谱。计算领域长期面临的挑战之一是,公众认为该领域只不过是编码而已。这种计算的形象是有害的,因为它没有向公众展示从事计算的人所从事的广泛活动。我们整理和清理数据,训练神经网络,并利用它们让日常生活变得智能化。我们找到了避免网络瓶颈的方法,让世界上最大的计算集群的全部能力到达智能手机用户的指尖,而他们从未注意到任何延迟。我们不断地寻找巧妙的启发式方法来规避计算的限制。我们开发的软件可以创建虚拟世界,无缝对接社会社区及其实践。
自从这门学科诞生以来,计算一直受到“计算机科学=编程”的公众观念的困扰,加上只有不适应社会的书呆子才能编程的刻板印象。这两种看法都是严重错误的。是时候停止用基本CT解释计算了。我们需要重塑CT的公众形象,以庆祝该领域的专业丰富性。
2.Barr, V.和Stephenson, C.将计算思维引入K-12:涉及到什么,计算机科学教育界的角色是什么?ACM进展2,1(2011), 48-54。
3.Bell, T.等。不插电的计算机科学:学校的学生在没有计算机的情况下进行真正的计算。新西兰应用计算与信息技术杂志, 1(2009), 20-29。
4.丹宁,P.J.和泰特尔,M。计算思维。麻省理工学院出版社,美国马萨诸塞州剑桥市,2019年。
5.丹宁,P.J.和特德,M.计算思维:一个学科的视角。教育信息学20, 3 (2021);https://doi.org/10.15388/infedu.2021.21
数字图书馆是由计算机协会出版的。版权所有©2021 ACM, Inc.
没有找到条目