本文看点:
计算思维在过去的五年间,可以说是全球主要国家K12教育的热门话题,越来越受到家长们的重视。但其实,“计算思维”教育的目的,不是让孩子学习一套编程语法,而是让他们真正的在生活中灵活的使用“计算思维”来解决问题。
周一
视野
全文共4513字,阅读时间6分钟
前两天接到闺蜜的电话,一上来就问我:你懂人工智能吗?
我说略懂一二,结果闺蜜就连珠炮一般开始提问:人工智能怎么学?七八岁的小学生怎么学编程?是学Scratch还是学Python?现在儿子正在学乐高,要换去学编程吗?
看得出来家长面对媒体狂轰滥炸, 还有培训机构各种名目繁多的课程,到底有多焦虑。
计算思维在过去的五年间,可以说是全球主要国家K12教育的热门话题,大部分发达国家从2015年开始,陆续把计算思维列入K12教育框架,不仅因为所有人都意识到计算科学和相应的思维方式对当前的孩子至关重要,也更因为这其中面对很多难以逾越的挑战。
我在去年后半年的研究课题正好是“如何用游戏化来促进K12学生的计算思维发展”,也借此机会和大家分享什么才是建立“计算思维”的最佳方法。
“计算思维”是什么?
计算思维是一种解决问题的思维过程,本质上讲,和是否有“计算机”无关。
计算思维(Computational Thinking)这个词汇,最早由卡耐基梅隆大学计算机科学教授周以真(Jeanette Wing)在美国计算机权威期刊《Communications of the ACM》上发表的论文中提出。在学术界,计算思维的的确切定义到现在都不能说完全达成共识。对于普通大众,可以理解为:计算思维是能用计算主体的思维来解释问题,并且设计解决方案。(注意,在周以真教授的概念中,这里的计算主体可以是机器,也可以是人。)
之所以提出计算思维,是因为我们所处的时代,计算机已经深刻嵌入到工作和生活的方方面面。仅仅作为计算机的初级使用者,已经不够了。(如何使用计算机,学术界是Digital Literacy或者Digital Competency的范畴,可以理解为“信息素养”,重点是培养人们使用信息化工具,以及对信息进行有效利用的方式方法,比如如何使用文件编辑软件、如何使用搜索引擎在互联网的海量信息中找到自己的目标信息,如何理解和使用传感器等硬件设备)。
未来,我们会更加依赖计算机完成复杂任务,为了能够很好的与计算机合作,解决问题,我们就必须先知道计算机工作的原理,也就是计算机的思维方式。简而言之,就是不仅做计算设备的使用者,更要像计算科学家一样能理解计算机的运行方式,和计算机参与的人机网络高效率互动。
所以说,几乎全球的专家都一致同意,到本世纪中叶,也就是我们的孩子工作的时候,计算思维能力,已经和算术、阅读、写作等能力一样,是每个人生活和工作的必备技能。
更进一个层次,当前人们之所以对计算机越发依赖,是因为我们的世界已经有很多问题太过复杂,以至于只能借助于计算机超级强大的计算能力才能找到答案。计算机之所以有如此强大的计算能力,除了硬件方面,也是因为他具备了一套特殊的“思考方式”。如果我们每个人都能驾驭这套思考方式,也就能更高效率的解决日常生活中碰到的复杂问题。
可见,计算思维虽然源于计算机科学,能够服务于有计算机参与的任务,但是更本质的说,计算思维是一套能高效率解决问题的思维方式,可以应用于生活中方方面面的问题。
由此再看周以真教授用“硬科学”的术语对“计算思维”做出的定义,就不难理解了:
计算思维是运用计算机科学的基本理念,进行问题求解,系统设计以及理解人类行为。
计算思维是一个解决问题的过程,包括:
设计问题解决方案时,能够考虑到计算机和其他工具的辅助
将需要解决的问题,概括并转化为细分问题
逻辑组织和分析数据
通过“抽象”来表示数据,如模型和模拟
通过一系列有序步骤的“算法”来自动化解决方案
识别、分析和实施可能的解决方案,以实现最有效和最有效的步骤和资源组合
“计算思维”等于“编程”?错!!
编程(Programming)是一种常见的需要借助计算思维的活动。在编程这项动手活动中,需要分析问题、设计解决方案、写代码(Coding)、调试代码(Debugging)以及测试。
但是将计算思维等同于编程,是大错特错。
我们理解为什么很多人以为计算思维就是编程。
一方面,很多人以为计算的主体只能是计算机,其实不管是人还是机器,都可以成为计算的主体。能让计算的主体高效率完成任务的,是一套相应的思维过程。
另外一方面,很多人认为计算机是靠程序驱动的,所以学计算思维就是要学编程。其实程序只是计算主体去完成任务的步骤,也就是第一步做什么、第二步做什么……而真正设计出“步骤”的过程更重要,这个过程才是计算思维真正强调的。
更何况,并不是程序编好了,给到计算机,就一定能输出理想的计算结果。有过软件编程经验的人都知道,很多时候程序设计和调试,比写代码所费的时间和精力还要多。
在针对美国、澳大利亚、芬兰等十个国家K12教育的研究中,编程是最常使用的培养计算思维的教学活动,不过真正涉及到编程操作,往往是从小学中高年级才开始。
以瑞典为例,他们的编程是与数学课和科技课结合的,小学4-6年级开始有算法的概念,并且初步开始图形化编程,到了中学才开始算法的设计和调试。
中国的教育创新者走在世界前列的,最近也有很多少儿编程的教育项目涌现出来。不过让人特别忧心的是,以编程为切入点,给孩子做”计算思维“的教育,有可能带来问题,尤其对低龄孩子。
其实想要培养孩子的计算思维,不一定非要结合计算机和编程,让他们意识到计算思维有什么用处,能解决我们生活中的什么问题,反而更重要。
学习“计算思维”
反而应该在日常生活?
学习计算思维最好的场景,其实并不是在所谓的STEM课堂或机器人编程课堂里,而是在日常生活,他们的兴趣爱好中,或者传统课堂里。
因为计算思维是一种解决问题的思维方式,培养计算思维的最终目的也是为了让我们能拥有更高级的思维方式,去解决学术、工作和日常生活中的问题,在日常生活中学习计算思维,能更好的内化成自然而然的想法,也更容易把培养起来的计算思维迁移到其他场景中。
很多发达国家,都更加强调在传统课堂中融入计算思维。别以为只有数学课和其他STEM课程是最适合融合计算思维的。其实从历史到音乐,从文学到美术,都可以结合计算思维来教学。这里也和大家分享几个案例:
案例一:六年级社会学课程正在学习罗马帝国
教学活动:学生们阅读古罗马儿童生活中的事件,与他们自己的生活经历进行比较;他们还进一步确定古罗马儿童的生活方式,并将其与自己的生活方式进行比较。老师要求学生特别注意“建模”和“模拟”(Modeling and Simulation)这两项思维活动,并要求学生反思他们在课程的哪些活动中使用了建模和模拟。更重要的是,老师请让学生们思考他们将来可能在哪里使用这些思维模式,包括他们的职业生涯。
与计算思维的联系:跨越几千年的时间,去发现当时的孩子和自己现在的生活的相同点和不同点,就是发现本质的过程,也是抽象思维的过程。和现在生活中分析生活中的事件,最后形成总体的生活方式的总结,就是在建模的过程。这些学生正在学习通过“抽象”来表示数据,例如模型和模拟,以及有逻辑地组织和分析数据。他们也在探索将这些技能转移到其他领域的方法。
案例二:九年级语言艺术课程中,学习各种文学手段
教学活动:学生们已经读了很多短篇小说,目前正在准备完成一篇论文,探索情节、观点、语气、讽刺、比喻等某种特定的文学手段,是如何在一篇小说中发挥作用的。这些学生必须清楚地陈述他们的论点,并且至少包括三份支持的证据。
和计算思维的联系:为支持观点来选择三份支持证据,就需要有能力引用原文中的证据,并且有逻辑地组织和分析数据;理解文学元素(如情节结构、背景、比喻语言等),“抽象”出这些元素的特点,本身就是计算思维的重要能力。
不用计算机和iPad
怎么培养“计算思维”?
很多少儿编程项目,如果设计得当,当然能很好的发展孩子计算思维。但是理解了计算思维绝对不仅仅局限在和计算机相关的使用,就不会再焦虑的让孩子一定去上一个编程班了。
其实学术界早就把一些不需要电子设备的,也就是“不插电”的计算思维活动项目,作为和编程等活动同等重要的研究课题进行研究,并且也验证了这些活动对于发展计算思维的有效性和实用性。更重要的是,就如同前文所述,很多专家都认为,在不是计算机环境中学习计算思维,反而更有助于形成计算思维能力的迁移。
到底什么是“不插电的项目”?举个例子就一目了然:家长和孩子们可以在家,为学校和家庭描绘平面图:在图中,每个房间都被标记为一个节点,每个走出建筑的通道都被标记为一条路线,孩子们们自己规划发生火灾时逃生路线的选择。
学生们描述图表的过程,可以看出他们是如何“抽象”家庭或学校建筑中的实际房间的;而他们在所有可能的逃生路线中最快最安全的路线时,本质上是在利用算法来形成一套解决方案的过程。
“不插电的项目”还有很多。
计算系统里的数据都是基于二进制,也就是0和1。在计算机通信的过程中,也就是一系列0和1的序列的传输过程中,有时候会发生错误,导致接受端收到的序列和发送端不一样了。这怎么办?
通信和计算机专家的做法是,在发送的0和1序列末尾,再加上一些特定的0或1,这些加上去的编码叫做纠错码,可以用来在接收端结合纠错码进行反算,如果传输错误的位数在一定范围内,可以借助纠错码推测出本来传输的0和1的序列是什么。
如果在不插电项目里,可以两人一组,分别代表发送端和接收端,发送端的小朋友用一组写着0和1序列的卡片,再加上纠错码之后发送出去。辅助的老师可以把卡片中的某几个专门改变,模拟在传输过程中带来的错误。接收端的小朋友根据纠错码的算法,进行反算,然后推测出原来传输的序列是什么。
这个过程不仅让孩子理解了计算机系统里的二进制传输,更是通过具象的卡片来演练抽象的算法,尤其是要一步一步的按照算法来进行“纠错”,很好的实现了对算法的理解。
当然,还有很多类似的“不插电活动”,比如通过打乱的扑克牌排序,来学习“排序算法”等。对抽象、算法、问题拆解有了深刻理解之后,编程就只剩下学习一种编程语言的语法了。甚至如果不是目标成为程序员,孩子可以不去介入繁琐的编程语言的语法结构,但是仍然具备了很好的计算思维,能够利用计算系统来设计任务和解决方案。
人脑是世界上解决问题能力最强的工具,不过假以计算思维,人脑的效能将得到更大的拓展。而万变不离其宗,教育的目的并不是要让孩子学习一种复杂的编程语法规则,而是让他们培养起对这种思维方式的兴趣,理解这种思维方式的用途,并且真正的在生活中灵活的使用计算思维,来解决问题。
作者 | 南溪
曾在中国和美国IT行业工作多年,目前墨尔本皇家理工大学从事教育科技方面的研究。
互动话题
你认为给孩子进行“计算思维”教育重要吗?为什么呢?欢迎和我们留言分享你的心得!