如何有效开展编程与计算思维教育:教师教育的视角
2020-04-27AmanYadav钱逸舟
Aman Yadav 钱逸舟
2018年初,教育部正式公布了《普通高中信息技术课程标准(2017年版)》,其中将计算思维列入核心素养。
教育部在《2019年教育信息化和网络安全工作要点》中提出,要在中小学阶段逐步推广编程教育,培养学生计算思维。
到底何为计算思维?
我们的教师教育是否应该有新的侧重点?
教师应该具备怎样的能力才能有效开展计算思维教学?
……
本期对话嘉賓亚达夫教授和钱逸舟博士针对上述一系列问题展开对话。
什么是计算思维?
钱逸舟:亚达夫教授,您好!在中国,编程与计算思维教育已经成为一个新的教育热点,计算思维也成为我们的一项核心素养。但是,我们对什么是计算思维似乎还是很模糊,或者说有很多不同的观点。作为美国计算机教育课标组专家、计算思维与编程教育研究的著名学者,您认为什么是计算思维?是否可以给出一个比较清晰的定义?
亚达夫:钱逸舟博士,您好!您说得很对,关于计算思维,不同的学者给出了不同的定义。但总体而言,大家对计算思维有一些共识。我认为定义计算思维可以从以下几点来把握:把复杂问题拆解为简单可操作的子问题;使用一系列清晰的步骤来解决问题;将解决方案迁移到类似问题中;使用计算机来自动化问题解决过程。简单来说,我认为计算思维包括问题拆解、算法、抽象和自动化等几个方面的能力。当然,这是我个人的理解,其他学者可能会有不同的定义。例如,Jeannette Wing可能会认为模式识别、逻辑思维等能力也是计算思维的组成部分;美国国家研究委员会(National Research Council)给出的定义更加复杂,包括了算法复杂度估算、程序调试、并行计算等计算机科学领域的重要能力。
钱逸舟:看来计算思维的确是一个涵盖面较广、不容易清晰定义的概念。在这种情况下,我们应该如何去评价学生的计算思维能力呢?
亚达夫:这是一个很好的问题。我觉得,虽然计算思维的定义各有不同,但是可以认为是大同小异,其核心组成部分是类似的,如问题拆解、算法、抽象和自动化。当我们去评价计算思维时,仍然需要从定义出发,根据你研究的计算思维的定义来设计相关的评价方法和工具。评价学生的计算思维,我认为可以从两个角度来思考:首先,我们可以从计算机科学和编程的角度来考量。Jeannette Wing最初提出计算思维这一概念时就强调,计算思维是用计算机科学的概念和方法来解决问题。这就包括了变量、循环、递归、程序调试和优化等常见的编程概念和方法。因此,我们可以让学生用编程的方法来解决问题,通过他们的编程表现来评价他们的计算思维。其次,我们也可以从计算(computation)的角度来对学生进行评价。计算思维是一种问题解决的思维,这种问题解决方式强调让学生成为计算思考者(computational thinker),编程不是必需的,学生可以用计算的方法思考各种问题,例如,如何在数据中发现规律和提取模式。因此,设计相关的非编程的题目也可以来评价学生的计算思维。
关于计算思维培养,美国有哪些教育改革措施?
钱逸舟:在中国,计算思维已经成为学生的核心素养,从国家政策到学校的教育改革都在强调这方面的内容。在美国,这方面相关的教育改革措施有哪些?
亚达夫:和中国类似,我们在课程标准中也加入了计算思维的内容,例如,在《下一代科学标准》(Next Generation Science Standards,NGSS)中,计算思维是其重要的组成部分。大学委员会(College Board)也推出了一门全新的AP(Advanced Placement)课程(注:大学先修课程),主要就是培养学生的计算思维。谷歌公司也在推动计算思维和编程教育的发展,也推出了自己的相关课程。
钱逸舟:如此看来,计算思维必将成为学生的一项重要能力,这应该是一个世界性的趋势。当我们谈论计算思维的时候,我们常常也会说到编程。您刚才也提到新的AP课程以及谷歌公司的相关课程,早些年您还和PLTW(Project Lead The Way)合作过计算机类课程研发,里面都涉及了编程的内容。那么,是不是说计算思维的培养需要以编程作为一个基础,或者说围绕编程教育展开?
亚达夫:您说得很对,当我们谈论计算思维教育时,似乎就是在谈论编程教育,甚至很多时候大家认为这两个是一回事。但是,计算思维的培养是可以脱离编程展开的,如不插电的计算机课程(CS Unplugged),就像我刚才所说的,从计算和问题解决的角度来说,计算思维可以脱离编程。然而,编程仍然是培养计算思维的一个重要工具,学生使用计算机编程来解决问题、搜集和分析数据、进行科学探究和思想表达,这些都是计算思维的重要组成部分。同时,我也必须强调,编程并不等于计算思维,编程是培养计算思维的工具而不是目的。
钱逸舟:我非常认同您的这个观点!但是,根据我的经验和观察,现在有许多课程仅仅是关注编程知识的传授,而不是培养学生用编程解决问题的能力,或者说计算思维。您是否有类似的感受?
亚达夫:在美国也肯定有类似的情况。我认为这里的原因有很多,但是一个重要的原因就是教师自己不了解计算思维。我所从事的研究和实践领域可以称为计算机科学教育(computer science education)或者计算教育(computing education),我的很多研究是关于计算机教师教育的。在美国,计算机科学教育发展的一大瓶颈就是缺乏优质的计算机教师。因为教师教育学院通常没有计算机科学教师这一专业,所以现在中小学相关课程的教师多数是来自其他学科的教师,如数学、科学,甚至是英语,他们自己对计算机科学的学科知识也不是非常熟悉,虽然我们为他们提供了很多在职培训,但他们的学科知识仍然是有限的。在这种情况下,他们完成编程知识的讲授已经倾尽全力,对于用编程来解决问题或者说培养学生的计算思维,对多数人来说更是一种挑战。我最近的一项研究发现,许多教师对计算思维有错误的认识,甚至不少教师直接把计算思维等同于“做数学”(do mathematics)。
优秀的计算机科学教师应该具备怎样的能力?
钱逸舟:您刚才提到的关于计算机科学教师的问题非常值得讨论。现在有很多研究都是关于学生计算思维培养的教学方法、工具、课程等,但是很少有研究探讨计算机科学教师的培养问题。我拜读了您最新的一些研究,都是关于计算机科学教师教育的。在您看来,一名优秀的计算机科学教师应该具备怎样的能力?
亚达夫:作为这个领域的研究者,我们都很清楚,一名优秀的教师需要具备两个核心能力,即具备良好的学科知识和具备良好的教学知识。就计算机科学教育而言,学科知识就是要熟悉计算机科学的相关知识,包括计算机的原理、编程知识、数据结构和算法等。教学知识是关于“怎么教”的知识,包括教学方法、教学设计、教学评价等有关有效开展教学的知识。这两者的有机结合就是PCK(Pedagogical Content Knowledge,学科教学知识)。然而,计算机科学教师的PCK具体包含哪些部分,我们还需要进一步研究,毕竟这是一个新兴的领域。但是,毫无疑问,计算机科学教师需要有很好的计算机科学基础知识。
钱逸舟:在中国的中小学,我们有信息技术课,计算思维和编程教育的相关内容也是在这一课程中展开的。我们的信息技术教师通常都有一定的计算机科学基础,这一点好像与美国的情况有所不同;而且多数教师都受过良好的师范教育,应该具备了足够的教学知识。在这样的背景下,我们要开展计算思维和编程教育,还需要对教师进行怎样的培训呢?美国是否有值得借鉴的经验?
亚达夫:从这一点来看,我觉得中国的师资基础要比我们好。如果教师具备了良好的学科知识和教学知识,就如我刚刚提到的,我们需要发展他们的PCK,也就是如何有效地把学科知识教给学生的能力。在计算机科学教育中,有一个有趣的现象,叫做“专家盲点”,当教师非常熟悉编程语言以及用编程的方式来解决问题的时候,他们常常很难从学生的角度再去理解学生为什么难以理解一些基础概念,如变量。而能够理解学生学习中的困难正是PCK的一个重要组成部分,因此,我觉得可以从这个角度出发,设计相关的教师培训项目。例如,教师们一起分享教学过程中学生遇到的学习困难,然后大家一起讨论有效的解决之道。这种讨论最好能够结合学生的错误代码案例来展开,根据我的经验这样的培训效果很好。同时,还可以为教师提供相关的在线教学资源,帮助教师了解学生在编程和计算思维类课程教学中常见的问题,并提供应对策略。在我之前的一个研究项目中,我们设计了一个计算机教育资源网站,里面有教学资源、项目案例、学生的常见困难和应对策略等各类教学资源。共有一百多位高中计算机教师参与了我们的研究,我们调查发现,计算机学科知识越强的教师,对学生常见困难相关的教学资源使用频率越高,这也从一个侧面反映出PCK对于教师的重要性。
其他学科的教师是否也要具备计算思维?
钱逸舟:对于计算机科学教师或者信息技术教师来说,应该具备计算思维,熟悉编程,这一点是毋庸置疑的。同时,我们也看到计算思维并不是计算机科学所独有的,而是一种通用的技能,尤其是能够和STEM学科整合。目前,许多学科的研究都需要用到计算思维,如计算生物学、计算物理学、计算化学,甚至还有计算语言学。在中小学教育中,其他学科的教师是否也需要具备计算思维?或者说,在其他学科的教学中,是不是也要融入计算思维?
亚达夫:您问了两个问题,我先来回答第二个。正如您所说,计算思维已经融入到许多学科中,尤其是STEM学科。因此,在中小学的STEM学科教学中融入计算思维将是一个大趋势,而且是非常必要的。例如,在科学课中,学生可以利用计算机模拟的方法来探究科学实验。对科学问题进行建模并实施自动化模拟,这就是计算思维的一种具体实践方式,同时也为学生理解科学概念提供了一个全新的角度。计算思维本身就是跨学科技能,学生掌握这种技能之后就是要用于解决其他学科的问题。因此,您的第一个问题就很容易回答了。我认为其他学科的教师也应该具备计算思维能力,尤其是STEM学科的教师,如果他们不具备良好的计算思维能力,他们就难以把计算思维融入到他们自己的学科教学中。
钱逸舟:我也认同您的这个观点。计算思维应该是未来学生需要具备的一个基本素养,这种素养不应该仅仅是掌握编程或者是某种信息技术,而是能够用这种思维方式来解决具体的问题。我目前的一个研究课题就是将计算思维和数学教学整合,让学生用编程的方式来解决数学问题。我发现这种教学不仅有趣味性,还能让学生从多种角度来思考和解决问题。然而,我们所面临的问题是:一般的数学教师不具备计算思维和编程能力,难以胜任这样的课程。您刚才提到计算思维应该是每个学科教师都具备的技能,那从教师教育的角度,怎样才能实现这样的目标呢?
亚达夫:您说得非常正确,目前来说,非计算机学科的教师很少能具备良好的计算思维能力,正是因为这样,我们才需要进行相关的研究,并对教师教育进行改革。我目前所承担的几项NSF(National Science Foundation,国家科学基金会)项目都是和教师的计算思维培养有关。首先,我认为在师范教育中,每一位师范生都应该修至少一门计算思维相关的课程,如果可能,还应该有一门编程的基础课,即便未来他们任教的学科并非计算机或者信息技术,但是具备这种能力对他们未来的教学会有帮助,尤其是能够帮助他们实现计算思维和学科的整合。我目前在密歇根州立大学就开设了《计算思维与问题解决》这一课程。其次,对于在职教师,我们需要对他们进行计算思维相关的教师专业发展培训。根据我们的研究,这种培训项目能够有效地提升在职教师的计算思维能力,进而使他们能够将计算思维融入到自己的学科教学中。
钱逸舟:看来切实可行的教师教育是实现计算思维和学科整合的重要一环。在我看来,计算思维和编程教育的有效实施最大的挑战就在于师资力量。就目前而言,我們的师范教育还没有重视学生的计算思维培养,在职教师的培训也很少会涉及计算思维。当然,在信息技术教育领域,这方面的教师培训是较多的,但是在其他学科,计算思维可能并不被人熟知,更不是教师的重要能力。作为计算机科学教育的研究者,我们可能都认同计算思维应该与学科整合,去驱动其他学科教学。但是,其他领域的教师为何要接受这种观点?计算思维对于其他学科真的如此重要吗?
亚达夫:计算思维的重要性已经在最新的美国STEM教育战略中得到了体现。2018年年底白宫推出的STEM教育战略报告明确提出了计算思维在STEM教育中的重要性。报告指出,要让计算思维渗透到所有教育之中。其实,计算思维的重要性无需我们多言,当今世界经济发展的核心动力就是计算机科学与技术,人工智能、大数据、物联网等新兴技术的核心都是计算,因此,在未来,计算思维一定会成为人人需要掌握的能力。而现在,我们需要做的一项重要工作就是培养合格的教师,让他们能够实施计算思维相关的教育。
钱逸舟:感谢亚达夫教授抽出宝贵的时间和我对话,希望下次还能有机会和您一起交流计算思维教育相关的话题。