谢忠新,上海市计算机特级教师,教育技术博士,华东师范大学基础教育特聘教授,上海市浦东教育发展研究院教育信息中心主任,曾获“全国优秀教师”等荣誉称号,对中小学教育信息化与信息技术教育有比较深入的研究与实践经验。目前为止,担任了共四期浦东新区中小学信息科技教师培训基地的主持人,带教指导了几十名信息科技骨干教师;出版了多本专著,如《中小学信息科技学科教学策略与方法》《网络环境下的课例研究》;开发了多门上海市中小学教师教育的共享课程,开发了多门中小学教师信息技术应用能力提升的网络课程;主编并正式出版了多本中小学与中职的信息技术教材;在教育核心期刊上发表了几十篇有关教育信息化与信息技术教育的学术论文;主持了多个上海市及全国教育信息技术应用相关的课题研究;每年为全国多个地区与学校的校长、教师、培训管理者开展教育信息化相关的专题讲座。
在过去几年中,计算思维(CT)和相关概念(例如编码、编程、算法思维)在教育领域受到越来越多的关注。国际教育技术协会(ISTE)、计算机科学教师协会(CSTA)、英国计算在学校工作组(CAS)、谷歌和微软等国际知名企业都在研究计算思维如何进入中小学,我国的高中信息技术课程标准(2016)也提出了计算思维的概念。尽管有着广泛的兴趣和关注,但是如何把计算思维整合到中小学教育中仍然面临着未解决的问题和挑战。为了有效地把计算思维融入到中小学信息技术教育中,需要对一些问题进行深入思考。
思考一:中小学信息技术教育为什么需要计算思维
从学科本身视角来看,中小学信息技术学科需要学科思维,信息技术学科学生获得的不仅是信息技术的相关知识与操作技能,更应该是一种独特思考和解决问题的方式(计算思维),它允许学生以更深的方式来理解数字世界,就像物理学科是为了使得学生更好地理解物理世界,生物学科是为了使得学生更好地理解生物世界。中小学信息技术教育的核心目标是培养学生适应个人终身发展与社会发展的人格品质与关键能力,其中最主要的是学生面对复杂情境利用信息技术解决问题的能力(包括创新思维与创新精神、社会责任感)。
从目前的中小学信息技术学科教学现实状况来看,近年来中小学信息技术学科教师在教学过程中关注与强调学生信息素养,从实际教学效果来看,中小学生的信息技术相关操作技能学习得很好,而学生思维缺失的现象比较严重。
从社会发展对人的需要来看,首先,一个国家的经济取决于技术的创新而不仅仅在于技术的利用;其次,信息技术发展很快,学生学习的技术在离开学校之前可能已经过时;再次,学校所学并不只是储存在大脑记忆库里的书本知识、固定答案,更是一种分析问题与解决问题的过程与方法。因为计算思维不应只关注技术本身,更应该关注数字革命技术背后的思想和科学,这样将帮助学生更好地了解技术发展,帮助他们掌握技术发展,而不担心技术的发展,从而能更好地适合将来社会对人的需求。学生计算思维与传统的3R技能(Reading阅读、Writing写作和Arithmetic算术)一起发展,将增加他们毕业后的成功机会。
从国际上各国把计算思维引入义务教育的情况看,许多国家积极把计算思维引入中小学教育,例如欧洲的大多数国家把CT融合到初中阶段教育,在小学阶段教育中融合CT的趋势也日益增加,已经有11个国家(英国、意大利、丹麦、芬兰等)最近完成了包括CT和相关概念的改革进程,七个国家(捷克、爱尔兰、挪威、威尔士等)目前正计划将CT引入义务教育,还有其他七个国家(AT,PT,CY,IL,LT,HU,SK)正在尝试在传统的计算机科学(CS)教育中整合计算思维。
思考二:什么是中小学信息技术教育中的计算思维
既然计算思维越来越受到关注,那么我们有必要首先要搞清楚,到底什么是计算思维,不同的学者和机构提出了各自的概念与内涵。
卡内基·梅隆大学计算机科学系主任周以真2011年提出了一个新的定义:“计算思维是制定问题及其解决方案所涉及的思想过程,以便解决方案以可由信息处理代理人员有效执行的形式表示”,这个定义中有两个方面对义务教育特别重要:一方面,计算思维是一种思想过程,因此独立于技术;另一方面计算思维是一种特定类型的解决问题的方法,这需要不同的能力,例如:能够设计可由计算机、人类或两者的组合执行的解决方案。2016年8月计算机科学教师协会(CSTA)发布了K-12计算机科学标准,更新了计算思维的定义:“计算思维是一种解决问题的方法,从计算机科学领域扩展到所有学科,为利用计算机解决问题提供了分析問题和设计解决方案的独特方法。英国计算在学校工作组(CAS)指出:用计算机来解决问题分为两个步骤,首先是想好解决问题的具体步骤,然后运用我们的专业技术能力通过计算机来实现。计算思维描述了当我们思考如何利用计算机(或人)来解决问题时所利用的过程与方法。我国的高中信息技术课程标准(2016)指出:计算思维是指个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。
上述这些关于计算思维的概念有着共同的指向,即计算思维与“问题解决”密切相关,计算思维是解决问题的过程和方法,尤其是利用计算机来帮助我们解决问题时,更需要计算思维。计算思维使我们能够解决复杂的问题,了解问题是什么,并制定可能的解决方案。然后,我们可以以计算机、人或者两者都能理解的方式呈现与执行解决方案来解决问题。例如:如果要制作一个数字故事,需要首先规划故事,以及如何拍摄它,然后才能使用计算机硬件和软件来帮助完成工作;如果要做一个演示文稿,需要首先规划要说什么、以及如何组织它,然后才能使用计算机硬件和软件将一组幻灯片放在一起。在上面这两个例子中,在开始计算机(或人)解决问题之前进行的思考被称为计算思维,让计算机帮助我们解决问题是一个两步的过程:首先考虑解决问题所需的步骤;然后利用我们的技术技能让计算机工作在这个问题上。
思考三:计算思维只在信息技术学科教学中培养吗
在中小学一提到学生计算思维的培养,人们可能自然而然地认为这是信息技术课程的内容,这是信息技术教师需要关注与思考的问题,显然这种想法是片面的。虽然计算思维描述了像计算机科学家和软件开发人员那样的思考,但许多其他人也以这种方式思考,而不仅仅是使用计算机时那样思考。例如,一个软件工程师团队创建一个新的电脑游戏的方式可能与你和你的同事如何合作设计工作计划的方式真的没有什么不同。因此,计算思维不是中小学信息技术课程独有的,或不是只有中小学信息技术课程培养学生计算思维,其他学科也涉及或培养学生的计算思维。例如:英语学科中,鼓励学生规划他们的写作、思考主要事件、区分背景和人物特征;在艺术、音乐或设计和技术学科中,学生们会考虑他们将要创建的内容,以及考虑如何通过将复杂的过程分解成若干计划阶段来完成所需的步骤;在数学学科中,在解决问题之前学生们将先要识别问题中的关键信息;这些学科活动中都涉及学生计算思维的培养。
中小学学生计算思维的培养途径有多种,首先,中小学信息技术学科能培养学生的计算思维;其次,其他学科也能培养学生的计算思维;第三,像STEAM等多学科融合的课程更应该能培养学生的计算思维;第四,在非正式的学习中教师也应该关注学生计算思维的培养。
思考四:利用计算思维解决问题的具体过程是怎样的
使用计算思维来解决问题的一般过程如下:首先将复杂的问题分解成一系列小而易于管理的问题(分解);对这些小的问题可以单独观察,考虑到先前已经解决了类似的问题(模式识别);可以分别仔细研究这些较小的问题,仅关注重要的特征,同时忽略了不相关的细节(抽象);接下来可以设计用于解决每个较小问题的简单步骤或规则(算法),形成解决问题的方案;对设计的解决方案进行评估(评估);最后,通过计算机编程以帮助最好地解决复杂问题(编程)。具体过程如下:
1. 分解
将问题分解为一系列较小可管理问题的过程称为分解,分解有助于我们找到复杂问题的解决方案或管理大型项目。将问题分解成较小的部分并不是计算机独有的,它在工程、设计和项目管理方面也会用到。例如:在信息技术课程中,当要求学生设计他们的程序或系统时,鼓励他们使用分解,确定程序或系统的不同部分必须做什么,并考虑这些是如何相互关联的。例如,要设计开发一个简单的教育游戏,需要进行分解,分解成一个个小问题,如:检查答案是否正确的方法、记录得分和进度的机制、用户界面(可能包括图形、动画、交互性和声音效果), 像这样的思考过程就是分解,这对游戏的设计至关重要。
2. 模式与概括
模式涉及发现小的分解的问题之间的相似性,模式使我们的任务更简单、问题更容易解决,因为我们可以在模式存在的地方使用相同的问题解决方案。为了在问题之间找到模式,我们寻找与每个问题相同(或非常相似)的东西。
概括是指寻找一类问题的一般方法,开发可用于解决许多类似问题的解决方案。概括是基于先前问题解决方案来解决新问题的一种方式,它包括识别模式和创建模式。例如,学生在正方形和三角形的绘制中,发现在形状的边的数量和涉及的角度之间有一个关系。他们可以编写一个表达此关系的算法,并使用它来绘制任何正多边形。学生可以创建程序来绘制等边三角形、正方形、五边形、特定长度的边;通过模式识别与概括来创建一个程序以绘制任意长度的任何正多边形。在中小学信息技术课程中,可以要求学生从使用一种软件到使用完全不同的软件,或者从一台计算机系统到另一个计算机平台的使用方式推广。
3. 抽象
抽象是指通过隐藏任何不必要的信息使问题或系统更容易理解,抽象是简化事情,识别什么是重要的,而不用担心太多细节。抽象过程决定我们需要突出和保持的一般特征以及我们可以忽略的细节,这是计算思维的基础。例如:当考虑三个城镇之间的旅行时间,我们对道路上的弯路或者城镇的样子等细节不感兴趣,可以隐藏。
在中小学信息技术课程中,当要求学生们将他们所了解的主题放在一个演示文稿或视频中时,他们将需要关注關键信息,并考虑如何表现这一点,同时将主题相关的细节放在一边,这就涉及抽象。 学生可以从玩电脑游戏中学习抽象过程,特别是那些涉及现实世界系统的交互式模拟的课程。激发学生对事情如何运作的好奇心,帮助他们思考在使用软件或浏览网页时在计算机或互联网上发生的事情。
4. 计算思维——算法思维
使用分解我们可以将问题分解成较小的部分,然后我们可以按照合适的顺序计划如何组合起来以解决问题,该顺序可以表示为算法。算法是一系列指令或一组规则来完成某些操作,它必须有一个起点,一个完成点和一组明确的说明。例如:你可能知道从学校到家最快的路线,例如左转、开车5千米、右转,你可以将其视为“算法”──作为一系列指令让你进入你选择的目的地。 有很多算法(即路由)将完成相同的目标; 在这种情况下,甚至还有算法来处理最短或最快的路线。一个算法可以由一个人或一个机器完成。有许多日常的情况,通过算法思维可以使工作变得更简单或更有效率。
在中小学信息技术课程中,可以要求学生了解什么是算法,以及它们如何在数字设备上的程序中使用。可以有许多算法来解决相同的问题,并且可以在不同的计算机系统上使用不同的编程语言来实现。除了设计算法,还可以要求学生使用逻辑推理来解释算法,并检测和纠正错误。可以让学生通过流程图等来表示算法,这使得学生在将它们作为计算机上的代码实现之前,更容易地获得教师或学生对其算法的反馈。
5. 计算思维——评估
计算思维的其他方面主要关注帮助解决问题或理解系统,评估更关心检查我们是否有解决方案,并考虑解决方案的质量、算法的效率、用户界面的设计。评估确保解决方案是一个好的过程,确保解决方式适合于目的。评估问题的解决方案需要进行权衡,因为对于所有情况,很少有一个理想的解决方案。
评估不仅仅是计算机科学家或软件工程师,每一位技术使用者都可以考虑软件和硬件的可用性是否适合目的,并且认识到使用计算机解决问题有什么限制。周以真教授认为:计算思维意味着每个人都应该能够:判断计算工具、技术和问题之间的匹配程度和理解计算工具、技术的局限性和优势。
评估能够确保我们的解决方案能够完成其设计的工作,并考虑如何改进。如果没有评估,算法中的任何故障都不会被发现,程序可能无法正确解决问题,也可能无法以最佳方式解决问题。
具体应该从以下几个方面对算法(解决方案)进行评估。
√ 是否容易理解——是否完全分解?
√ 是否完整——是否解决了问题的各个方面?
√ 是否高效——它是否充分利用可用资源来解决问题(如尽可能快地/使用最少的空间)?
√ 是否符合我们的设计标准?
如果算法符合这四个标准,则可能会很好地运行。 然后才可以对该算法进行编程。评估有助于确保把解决方案编写成程序时出现尽可能少的困难。
思考五:计算思维与计算机编程有关吗
一提到计算思维,人们往往与计算机编程联系起来,认为只有通过学习计算机编程才能培养学生的计算思维。因此,许多关于计算思维培养的论文中都会提到Scratch编程、Kodu编程等。那么,计算思维与计算机编程到底是什么关系呢?
简单来说,编程会告诉计算机应该做什么以及如何做,而计算思维使人们能够准确地计算出要告诉计算机的内容。例如,如果去以前从未去过的地方见到您的朋友,您可能会在离开房子之前计划路线。您可以考虑可用的路线,哪条路线是“最好的”──这可能是最短路径,最快的路线,或者路途中经过您最喜爱商店的路线。然后,您可以按照逐步的指示来到达那里。在这种情况下,规划路线部分就像計算思维,遵循与执行规划就像编程。
虽然编程是中小学信息技术新课程的重要组成部分,但将其视为计算思维是错误的,计算思维主要是指通过分解、模式与概括、抽象、算法思维、评估来形成有效的问题解决方案,然后通过编程来实现解决方案。当然,正是通过编程的实践经验,学生的计算思维才能最有效地培养和实践,编程是计算思维培养的重要手段,编程可以使计算思维概念具体化,成为学习计算思维的工具。并不是所有的学生今后都将继续在软件行业获得工作,或者在学术研究中使用他们的编程,但他们都有可能应用计算思维。编程可以使计算思维概念具体化,为学习强大思想开辟道路。学习者不仅应该能够编写程序,还可以阅读它们。即使是小孩子也应该能够“使用逻辑推理来预测简单程序的行为”。也就是说,能够向别人解释一个程序打算做什么,或者如果一个程序没有按预期行事,能明白为什么。中小学计算思维培养过程中的常见编程学习工具有:Scratch,Kodu,Lilypad,Greenfoot,乐高Mindstorms等。
思考六:计算思维是信息技术课程的具体内容吗
计算思维不是中小学信息技术课程的一个具体内容,计算思维应该是隐含在中小学信息技术课程目标中。英国的Computing At School组织发表了一个名为Computing Progression Pathways的文件,其中列出了计算机的主要知识领域(算法、程序设计与开发、数据与数据表示、硬件与处理、通讯与网络信息技术),并提出了与这些领域相关主题的更多掌握的具体指标,这些指标涉及计算思维的各种组成。上表以“数据与数据表示”这一计算机知识领域为例,列出了从小学到中学四个阶段的学习目标。
从上表可以看出,中小学信息技术课程的具体知识与技能目标都与计算思维的相关内容紧密相关。
另外,传统的中小学信息技术相关活动可以通过计算思维来解决。例如,让学生创建“一个视频演示”可能会将项目分解为一个个简短的任务(分解),仔细考虑解决这些问题的最佳顺序(算法)并绘制视频的故事板,了解如何拍摄和编辑的标准技术,并认识到如何利用别人的作品基础,甚至在作品中包括别人的作品(模式与概括),了解但不要过分关注照相机和文件格式的技术元素(抽象)。
思考七:如何评估中小学生的计算思维
对于如何评估学生的计算思维相关的研究不多,其中Brennan和Resnick(2012)描述了评估计算机思维的三种主要方法:一是分析学生的项目过程中的电子档案袋,生成每个项目中使用(或未使用)的(编程)块的可视化表示;二是基于人工的访谈,基于两个受访者关于选定项目的讨论;三是设计情景,考虑到一组中低高不同复杂程度的三个项目,受访者被要求选择一个项目,并做如下的事情:说明所选项目的作用,描述如何扩展,修复一个错误,通过添加功能来重新混合项目。
我们可以通过分析学生制作完成的人工作品(例如游戏或模型)来衡量学生计算思维的能力,测量学生计算思维的一个策略是要求学生修改现有程序的代码,以达到特定的目标;故障排除方案(即调试现有程序)也可能是评估学生在计算机程序设计和基于计算机的问题解决方面的流畅程度的有效途径;我们也可以使用多项选择题评价和伴随性量规来评估中小学生的计算思维技能;我们也开发支持教师评估学生编程的工具,并评估计算思维的发展,例如开发一个执行Scratch程序自动分析的工具,检测学生作品中特定原语(例如条件语句)的存在或不存在。
从目前情况来看,评估学生的计算思维的研究仍然不够,计算思维的评估还处于早期阶段,需要进一步研究。
(作者单位: 上海市浦东教育发展研究院教育信息中心)