APP下载

基于编程解决问题的青少年计算思维培养框架

2020-07-31于纪明李冠琼

计算机教育 2020年7期
关键词:编程框架学习者

于纪明,李冠琼,朱 坤

(1.哈尔滨师范大学附属中学 电教中心,黑龙江 哈尔滨 150000;2.哈尔滨师范大学 教育科学学院,黑龙江 哈尔滨 150000;3.哈尔滨市第三中学 电教中心,黑龙江 哈尔滨 150000)

0 引 言

随着新兴技术的兴起,云计算、大数据、量化学习、人工智能等新兴词汇已成为现代化的标签。百年大计教育为本,教育要顺应现代化的发展,必然要顺应时代需求,因此,人才的培养是重中之重。在人才培养实施阶段中,人类的思维方式和实用工具决定行动方案,所以,培养人才还需从根本出发,调整思维方式,改变行动方案,提升问题解决的效率与质量。这就需要教育者关注对学习者计算思维的培养,改变学习者的思维模式,使问题解决得更高效快捷。

1 编程解决问题背景下的计算思维内涵理解

2006 年,周以真[1]发表论文《Computational Thinking》,自此,“计算思维”这一名词便进入人们的视野。在此定义中可以看到,计算思维并不属于某一具体学科,也并非完全属于某一领域,而是作为一种抽象化的思维方式存在,其中将运用计算机科学的理念作为支撑,并最终在问题解决过程中作为一种工具呈现。另外,周以真[1]教授还指出,计算思维应当作为一种普适性思维为众所用。周以真教授对计算思维提出的定义,虽然具有时代意义和开创性,但这个定义依旧是强调其工具特征,忽略了对计算思维本身的阐述,也就是内在的结构、框架、组成元素。2010 年美国师生创新技术体验机构对计算思维进行了定义,较2006 年周以真教授提出的定义,对计算思维的应用层面进行了进一步的补充,说明:在运用计算思维进行问题解决中,应当做什么,怎样做。2011 年,计算机科学教师协会(CSTA)与美国教育技术协会(ISTE)共同提出关于计算思维的认识,明确说明了运用计算思维进行问题解决的具体过程,充分体现了计算思维抽象与自动化的特征,也体现了计算思维、数学思维、工程思维之间的思维融合。2017 年,我国高中信息技术课程标准起草组说明了计算思维解决问题的一般过程,在这个过程中,计算机学科知识始终作为支撑贯穿整个环节,强调了计算思维与计算机学科的重要联系,说明了其实践操作的主要内容。

根据以上对不同国家、不同学者关于计算思维的定义分析可以发现,目前,人们对计算思维的统一认识存在学科基础和功能属性两个方面。在学科基础层面,学者们普遍将计算思维作为计算科学领域内的一项内容,认为其相关思想理念均与计算科学有着不可分割的联系;在功能属性中,学者们普遍认为,计算思维培养的主要目的是更好地进行问题解决。以上是关于学者们所提定义的统一认识,但就计算思维的其他内容要素、操作过程等方面,学者们均有不同的认识,而产生不同认识的原因就是由于计算思维本身内涵的丰富性和所处环境的多样性,一个定义难以对计算思维进行不同背景下的全方位的解释[2]。

在编程解决问题背景下的计算思维,通过人与计算机的有效沟通来体现计算思维的主要内涵,主要面向青少年学习群体所接受的K12(Kindergarten through twelfth grade,指从幼儿园到十二年级)阶段的编程教学,NRC 指出将计算思维传递给学生的最有效手段是将其融于K12 阶段的教学中。因此,通过K12 阶段的编程教学,一方面培养学习者在计算科学方面的知识,另一方面提升学习者在利用编程进行问题解决的高效性和全面性,提升学生的计算思维能力,进而发展核心素养[3],最终目的是培养学生能够在不插电活动中通过计算思维进行问题解决。作为与计算机学科有密切联系的计算思维,从编程教学的视角下对计算思维进行培养能够很好地提升学习者在问题解决方面的方法和手段[4]。

2 青少年通过编程解决问题的步骤

计算思维的运用充斥在生活中的每一件小事,在遇到问题时,如何运用计算思维解决问题?根据对近年来不同学者[5]对计算思维的不同理解以及与黑龙江省内多年从事计算思维培养的专家进行讨论,共总结出3 种计算思维体现在求解问题过程中的步骤。

第1 种步骤:通过收集数据、分析数据理解和思考问题;去除问题的冗余部分,抽象定义问题,将问题化简分解为小问题,分解与转化的过程如图1 所示。自上而下表示了问题的抽象程度的变化,自下而上体现了问题解决顺序。接下来,对具有相同数据特征的所有问题进行模式化;定义解决问题的步骤,建立求解模型;不断调试和验证解决方案。

图1 问题分解与解决过程

在此步骤中,需要将问题中存在的数据提取出来,判断并观察数据之间的联系与规律,将问题抽象并重新定义为具有该数据特征的“问题母版”。接下来,根据所建立的“问题母版”研究解决问题的步骤,一般由浅至深、由易至难,从低级到高级。递归思想是在这个过程中常用到的思想,指递进并回归,从大问题分解至小问题,再从小问题进行解决,依次攻破,层级不断上升,最终回归所要解决的根本问题。确定问题解决步骤之后,将步骤模型化,模型的建立有利于在大脑中建立相对完整的问题解决系统,将其纳入认知网络之中,也有利于在今后将知识内化为能力,并进行能力的迁移。最后一个步骤是在不断检验的过程中进行调试,相当于迭代过程,多次的试误可以观察方案中的不足之处,计算机会在学习者进行尝试后予以反馈,帮助学习者发现问题,及时修改,不断逼近目标,最终得到最优解。第1 种步骤的具体过程如图2 所示。

图2 第一种一般步骤的实现过程

第2 种步骤:在计算机特性的基础之上,将问题进行抽象,使其转化为计算机可以解决的计算问题,最终,通过程序设计语言实现问题的自动求解。当选择第二种方法进行问题解决时,问题类型通常为比较复杂的计算问题。首先,需要理解问题的特性,在此过程中,会对问题进行关键词的提取,过滤掉冗余信息,并对其重新排列组合成一道计算问题,过程中要考虑数据或者变量之间存在的规律,以便进行下一步的解决。

为了对第2 个步骤进行更好的说明,选取K12 阶段编程课中的经典题:细胞分裂器。计算要求是算出第5 次分裂共产生多少细胞。

进一步将其转化为计算问题:第1 次分裂后的细胞数为1×2,第2 次为2×2,第3 次为2×2×2......求问第5 次分裂后,最终的细胞总数为多少。以上是对问题特性的理解以及转化。接下来,通过程序语言实现问题的自动求解。自动化建立在“有效沟通”之后,有效沟通需要运用计算机知识,结合现实问题,设计算法实现,利用程序设计语言对计算机发出指令,使其按照指令进行自动化求解。因此,还需对题目进行算法设计,在题目中,根据数据特征及题目分析,可以知道其中运用到的算法为乘法与加法,乘法用于表示每次分裂的细胞数,加法用来进行5 次细胞的总数运算。根据以上分析,可以确定变量数量与类型并进行代码编写,最终进行自动化的过程。

第3 种步骤:问题抽象,符号化表示,算法求解,算法实现,代码编写与调试。第3 种一般步骤是建立在算法思维的基础上提出的。算法思维属于过程性思维方式,在运用其进行问题解决时,首先对问题进行理解,并将问题进行分解降级,大问题分解转换为小问题,并利用抽象思维将问题进行抽象。接下来,通过符号对抽象后的问题重新表示以此清楚地看到各变量之间存在的关系,根据题目,考虑需要用到的算法。算法设计完成后,确定过程中的每一步计算结构,并运用计算机对算法思维结果进行自动化呈现。代码编写完成后,在调试中,计算机能够及时予以反馈,通过反馈内容,可以看到代码中存在的计算机语言规则方面的错误,或函数调用过程中所出现的错误。这时,可以根据提示进行定位并进行修改。最终得到最优的问题解决方案。

以上3 种步骤都是基于青少年通过编程解决问题的计算思维体现,从步骤的解释说明可以看出,3 种步骤的不同之处在于操作方法以及顺序差异,但3 种步骤虽然表现形式不同,本质却是相同的。面对问题的解决,从操作对象的角度进行划分,可以总结为一种一般步骤:分析问题、找寻算法、自动化实现、调试。这4 个操作步骤可以涵盖前文中所提出的3 种步骤,按照问题、方案、迭代的顺序进行问题解决。

3 基于编程解决问题的青少年计算思维培养框架

2010 年,周以真教授对计算思维的本质给出了框架图,在该框架中,周以真教授将主要过程分为自上而下和自下而上。自上而下进行自动化的实现,自下而上进行抽象过程。需要将应用语言最终转化为机器指令进行计算机处理,而机器指令又可以抽象为应用语言。

另外,通过本质框架图,可以了解到该框架图的基本原理是建立在计算科学的基础之上,这是计算思维的学科基础,但是计算思维作为一项能力,其本质框架图只能让人们了解到计算思维中问题解决过程间的固态关系,无法指导教学者进行计算思维培养教育。目前关于计算思维的三维框架和八概念框架[6]也都是仅描述了计算思维的下位概念之间的关系。结合周以真教授提出的计算思维的框架,在皮亚杰发生认识论的理论指导下,在编程环境下青少年计算思维的培养框架构建如下。

计算思维培养框架主要用来指导计算思维培养活动,教师可以依据此内容对课程进行教学设计或者维度设计,也可以依据本框架对计算思维活动进行模块化评价,具体框架内容如图3 所示。

图3 计算思维培养框架

该框架主要分为4 个部分:计算思维的问题解决步骤、能力培养、遵循原则和学科基础。

(1)计算思维的问题解决步骤是内核部分。由于计算思维最核心的直观体现即问题解决,因此,问题解决是计算思维能力发展框架中的核心关键层。本框架中,所包含的计算思维问题解决步骤分为4 个:分析问题、找到算法、自动化实现、调试。这4 个步骤是根据第二小结中所提到的3 类一般步骤中总结而来,尽管这3 个一般步骤不同,但操作意义具有同一性,因此,将其归为4 个主要步骤。

(2)从问题解决的4 个步骤出发,每个步骤中都有发展或培养的主要能力,因此,能力培养在中间层,也是问题解决步骤的外围层。由于内核部分中每一个步骤都是问题解决的重要组成,因此,在实现过程中,每一个步骤都能够发展一种或多种能力。在分析问题过程中,可以发展学习者的分解与转化能力以及抽象能力。其中,抽象能力作为计算思维能力培养的关键,将问题抽象为计算问题或者将大问题分解转化为小问题;在找寻算法的过程中,将发展学习者模式识别、建模能力。

首先,通过找寻算法,培养学习者的模式识别能力,在这个过程中,学习者需要将算法对应为相应的问题,识别问题以及算法的主要类型。其次,在第2 个阶段中,即在模式识别成功后,对解决方案进行建模,通过建模确定算法的主要实施阶段;在自动化实现的过程中,可以发展学习者形式化的能力。最后,在调试步骤中,发展学生的纠错能力以及调试代码的能力。例如,计算机在实施命令的过程中,若代码编写不正确,则会向用户反馈error 信息,学习者根据反馈信息在相应位置找到错误并进行改正。

(3)遵循原则是计算思维问题解决和能力实现的主要依据,因此,作为环状最外层。在计算思维问题解决和能力培养过程中,应当始终遵循科学性、完整性、高效性和可操作性,科学性意指遵循认知科学、计算科学等;完整性意指在整个过程中应当具有全局思维,无论是进行问题分析还是算法解决都需要瞻前顾后,能力发展也需要具有完整性;高效性是指问题解决要达到最优效益,可操作性表示问题解决方案要切实可行。

(4)计算科学和数学科学作为计算思维发展框架中的学科基础,位于底层支撑。计算科学是计算思维进行自动化实现的主要支撑,同时,计算思维也利用计算科学的方法进行问题解决[7]。例如,在问题解决前做准备工作,这相当于计算机中的缓存或者预置;当我们在问题解决过程中将其转化为基础问题,并从小问题开始自下而上解决,这相当于计算科学中的回推;当我们对问题进行分析后提出自己的想法并选择解决方案时,这属于计算机的在线算法;最后,在整个问题解决方案的设计过程中,需要考虑操作步骤的冗余性以及失败结果中存在的无关性。

数学科学在计算思维问题解决过程中主要帮助学习者进行算法设计和问题模式化。首先,在算法设计的过程中需要运用数学知识进行分析推理,设计出合适的算法解决。在问题模式化过程中,需要将问题转化为数学问题,便于进行下一步的算法设计。因此,计算思维解决问题的过程中,数学思维是十分重要的[8]。

4 结 语

对于编程环境下青少年计算思维的培养,目前处于研究的关键阶段,主要问题和难点在于学者们对计算思维培养的维度和框架还没有统一的划分和设定,对计算思维的量化评价还需进一步探讨。因此,在未来的研究中,我们将通过本文中所定义的框架,研究云平台中计算思维的量化评价,并通过数据挖掘和聚类分析对学习者进行画像,进而完善平台中的个性化服务。

猜你喜欢

编程框架学习者
在线学习环境下学习者画像构建研究
有机框架材料的后合成交换
框架
元征X-431实测:奔驰发动机编程
编程小能手
你是哪种类型的学习者
纺织机上诞生的编程
十二星座是什么类型的学习者
非正式学习环境下基于移动终端的学习者模型研究
浅谈框架网页的学习