基于计算思维培养的编程教育研究
2021-05-23梅松珂顾美俊
梅松珂 顾美俊
摘 要 概括国内外关于计算思维的定义及内涵,并对计算思维教育以及基于计算思维培养的编程教育进行综述,为在编程教育中培养学生计算思维提供依据。
关键词 计算思维;计算思维教育;编程教育;计算机科学
中图分类号:G427 文献标识码:B
文章编号:1671-489X(2021)07-0069-03
0 引言
计算机科学的发展给经济和社会生活带来深远的影响,无论年龄大小,几乎每个人都有望在技术发展的同时掌握一些基本的计算技能。应该让学生为未来做好准备,他们有能力使用目前尚未发展的技术来解决问题。在这种情况下,人们对个人的能力和期望自然会有所不同。除了当下这些技术的飞速发展之外,更着重强调的是人人都应该具备一些基本的计算技能。在此基础上,每个人必须通过批判性思维来使用数字技术,以获得知识和技能,并解决在学习和日常生活中面临的问题。正如Wing在与计算思维技能相关的笔记中指出的:“无处不在的计算是昨天的梦想,后来变成了今天的现实,计算思维是明天的现实。”[1]
1 计算思维
计算思维不是新概念,这是自20世纪60年代以来在计算机科学背景下被强调的一项重要技能[2]。在早期,计算思维被认为是计算机科学家需要获得的一种能力,这在计算机科学的历史上被认为是非常重要的。然而在21世纪,这种认识已经被改变了,尤其是在Wing确定计算思维是每个人都应该获得的基本能力之一后。Wing的决定在短时间内得到人们的广泛回应,同时还有一批在教育领域制定国际标准的机构,如国际教育技术学会(ISTE)、计算机科学教师协会(CSTA)、国家研究委员会(NRC)。政策制定者和大型公司(谷歌、微软等)都非常支持这一想法,并为将计算思维视为每个人都应该获得的能力作出巨大贡献,这对个人为未来世界做准备非常重要[3]。
在21世纪,人们期望通过使用现有的技術来发挥生产作用,而不是成为消费技术的人。在这个框架下,应该提高个人创造力和解决问题技能。为了培养具有创造力和结合技术解决问题的技能的下一代,发展计算思维对年轻人来说至关重要。在这种背景下,ISTE强调,年轻人应该准备成为计算思想家,理解如何通过使用当今的技术来解决明天的问题。因此,一方面可以说计算思维相关技能可以通过受益于信息处理的能力来提高问题解决和批判性思维能力;另一方面,计算思维能力对日常活动的执行有显著影响——信息技术可以被用来更为有效地执行。
计算思维的观点是由Wing于2006年提出的,即“计算思维代表适用于每个人的态度和技能,而不仅仅只是计算机科学家”。但是对于计算思维的概念的定义,目前还没有共识,关于这个定义过程的讨论还在进行中。Wing将计算思维的概念定义为面对问题时像计算机科学家一样思考。在这种背景下,Wing在2006年首次将计算思维确定为一种思维方式,包括以适当的呈现方式理解问题,通过抽象使这些问题合理化,并为它们开发自动化的解决方案。后来,Wing在2014年又重新发展了这一定义,并将计算思维表示为一种思维过程,包括问题的表述,因为计算机可以有效地执行和表达解决方案。在计算思维的技能上,包括通过使用心理能力、个人根据信息处理过程将问题解决过程推广到其他问题的能力、通过算法思维自动化解决过程的能力、通过组织和分析转换信息的能力、通过计算机应用程序抽象信息的能力以及连续使用抽象和建模技能的能力。
ISTE和CSTA将计算思维技能定义为算法思维、创造性、逻辑思维和解决问题技能的反映。NRC建议数学和计算思维是中小学科学教育的主要实践。考虑到这些定义,计算思维技能与众多变量之间的关系是可交流的。尽管对该术语有不同的定义,也没有就不同的定义达成共识,但人们普遍认为计算思维技能涵盖了抽象、算法思维、问题解决、分解、概括和调试的概念[4]。为了支持这一想法,Kukul等人于2016年在工作中形成一个与计算思维解释相关的词语,并发现文献中最常用于定义计算思维过程的数据词是抽象、问题、解决、算法和思维[5]。
2 计算思维教育
计算思维属于科学方法论的领域,它从思维的角度解释了人、计算和计算机之间的关系。根据计算思维的应用范围,可分为计算机科学中的计算思维、计算科学中的计算思维和所有学科中的计算思维三个层次[6]。计算机科学中的计算思维教学主要运用计算机的原理和方法解决实际问题,这是计算思维教学最基本也是最本质的内容。计算科学中的计算思维是一种基于计算机自动计算将实际问题转化为有限计算过程的思维方式。所有学科的计算思维侧重于如何应用计算机科学知识和计算理论解决其他学科、生产活动和人类社会的问题,具有普遍性和多样性的特点。
基于这一观点,计算机被认为是一种思维的实现方式,而不是一种工具,计算机科学被认为是一门发展学习者思维能力的学科,而不是教他们使用软件。每个学科都有自己的思维方式。首先,计算思维是一种学术思维方式,由于它是从计算科学中抽象出来的,所以它具有一些明显的计算特征。其次,计算思维把计算当作一种思维方式,使得计算具有思维的属性。所以计算思维教育可以从两个方面来分析,即具有计算特征的思维教育和具有思维属性的计算教育。
一方面,具有计算特征的思维教育。学生使用计算机解决问题时,思维方式必须满足计算机计算的条件,这表明学生应该按照计算机的计算方法、计算规则和计算过程来思考问题。在计算思维教育中,思维的主体是人,计算的主体是计算机,教学的关键是将实际问题转化为有限的计算过程。在实际教学中的转换过程:首先,教师引导学生使用代数语言或其他规范语言将实际问题抽象成一个格式化的表达式;然后,计算机根据预定的规则通过字符转换方法将格式表达式转换成一些字符串;最后,依靠计算机强大的计算能力来计算结果。在这个教学过程中,学生的思维表现出计算的特点,思路也必须是清晰的。
另一方面,具有思维属性的计算教育。计算机是人类发明的,其强大的计算能力只有在执行算法时才有价值,而算法本身也是一种表达思想的方式。计算是思维的实现,思维是计算的实现,所有的计算教育活动都是在人类思维的指导下完成的,计算机通过间接地、近似地、有限地模拟人类的思维来解决问题。
3 基于计算思维培养的编程教育
通过计算思维,人类可以更有效地使用计算机解决问题,因此,计算思维能力的培养在教学中尤为重要。但是计算思维的教学离不开载体,作为与之密切相关的编程教育,在计算思维的培养上发挥了举足轻重的作用。
编程类课程主要是为了培养学生的归纳推理能力,主要采用启发式推理、关注点分离、简化等归纳推理方法,涵盖抽象问题、创建模型、设计算法、验证结果等内容。编程课程的目标是让学习者理解如何用计算机解决实际问题,这是培养计算思维能力的体现。
在传统的编程类课程中,由于缺乏具体有效的思维指导,讲授的内容局限于编程语言本身,解决的问题是事先抽象处理的理想模型,应用的方法缺乏通用性、工程性和实用性,导致教学效果与教育目标相差甚远。虽然现阶段常用的编程语言各不相同,但解决问题和思考问题的方法是相同或相似的。
计算思维的引入使该课程更加注重运用问题驱动的教学模式来教授思维的思想和方法,即按照发现真实问题、联想问题的解决方法,并将其映射到计算机模型和设计算法的过程来教授计算机知识。基于计算思维的教学模式不仅能帮助学习者理解人类思维与计算机计算的协同关系,还能使他们掌握计算思维总结的一般思维方法。计算思维能够有效地将实际问题与计算机模型联系起来。基于计算思维的编程课程可以明确地教授思维过程,而在此之前只能是学习者自己理解的。在这种基于计算思维培养的课程中,学习者只需学习一门编程课程就可以解决各种实际问题。
编程是表达计算思维最合适的方式。计算思维要通过一些语言或者文字来描述,没有明确的表达是没有意义的。进一步说,计算思维的表达一定要遵循一些严格的规则和特定的语言格式,否则无法理解。编程语言本身是一种形式表达,具有确定性、有限性和機械化的特点。编程语言能够准确地表达计算思维,表达方式也易于理解。
编程课程是培养计算思维的有效载体。计算思维是一种思维形式,主要表现在解决问题的过程中。基于计算思维的编程教学是以解决问题为目的,通过自动的、机械的计算来实现的。计算机知识是计算机表达和计算机能力培养的基础。具有数字化、计算机化和程序化特点的编程课程是培养计算思维应用能力的有效载体。通过讲授计算机的具体方法和原理,培养学习者发现问题、分析问题、设计算法、比较性能和解决问题的能力。
编程课程的实践是培养计算思维能力的重要途径。计算思维能力的培养需要经历真实的案例,所获得的能力也必须在实践中得到检验。实践教学可以让学习者体验到编写程序、形成计算思维的过程。编程课程通过大量的思维训练和实践,使表面的、抽象的思维和知识深入学习者的内在思维系统,学习者可以主动或不自觉地运用合适的计算思维方法和有效的计算机知识来解决问题。编程课程的实践可以将知识内化为能力,将编程与计算思维培养融为一体。
而编程过程中通过使用归约、变换、模拟等方法,应用结构编程和函数将复杂的未知问题转化为简单的问题时所涉及的抽象、概括、评估等正是计算思维教学的核心内容。所以,编程课程是最能体现计算思维思考过程的课程。
4 结语
总之,在以计算思维为培养目标的编程课程中,编程知识贯穿解决问题的整个过程,最终形成一个以知识为节点、计算思维为连接体的复杂思维网络。计算思维的融入使编程课程的内容尽可能接近实际问题,它打破了人、现实世界和计算机科学之间的界限,将人类的思维和计算机知识从计算机扩展到现实世界。计算思维教育与编程教育有着天然的联系,计算思维能力的培养需要编程教育的支持,编程教学需要计算思维的指导,因此在编程教育中融入计算思维是有意义的,在传授知识的同时也有必要传授其蕴含的思想。这样可以通过思维强化知识,又可以通过思维巩固知识,从而形成思维透彻的知识。最终,它既能帮助学习者学习编程语言,又能培养他们的计算思维能力。■
参考文献
[1]WING J M. Computational thinking and thinking about computing[J/OL].Philosophical Transactions of the Royal Society A,2008,366:3717-3725.
[2]Cuny J, Snyder L, Wing J M. Demystifying computa-tional thinking for noncomputer scientists[EB/OL].
(2013-10-05)[2020-10-03].http:l/www.cs.cmu.edu/~Comp
Think/resources/TheLinkWing.pdf.
[3]Bower M, Wood L, Lai J, et al. Improving the computational thinking pedagogical capabilities of school teachers[J].Australian Journal of Teacher Education,2017(3):53-72.
[4]Selby C, Woollard J. Computational Thinking: The Developing Definition[R].ITiCSE Conference,2013.
[5]Grover S, Pea R. Computational Thinking in K-12: A Review of the State of the Field[J].Educational Researcher,2013(1):38-43.
[6]任友群,隋丰蔚,李峰.数字土著何以可能?:也谈计算思维进入中小学信息技术教育的必要性和可能性[J].中国电化教育,2006(1):4-5.