编程教学对青少年高阶思维技能发展的有效性研究
——基于国内外近5年31项实验和准实验的元分析
2022-11-22董艳吴佳明郑娅峰翟雪松杨洋
董艳 吴佳明 郑娅峰 翟雪松 杨洋
(1.北京师范大学 教育学部,北京 100895; 2.河南财经政法大学 计算机与信息工程学院,河南 郑州 450016; 3.浙江大学 教育学院,浙江 杭州 310058; 4.北京师范大学珠海校区 人文高等社会科学研究院,广东 珠海 519087)
一、问题提出
智能化时代,青少年编程教育逐渐受到关注,日益成为培养高新技术人才的重要手段。在开展编程教学的价值问题上,已有研究表明编程教学可有效培养学生计算思维、批判思维、问题解决等高阶思维能力[1]。国际上多个教育系统也在进行编程教学体系的开发和实施,芬兰、美国、澳大利亚、新加坡、日本等多个国家和地区都已经将编程纳入到国家课程标准中。与此同时,我国也认识到了青少年编程的重要性,2017年出台的《新一代人工智能发展规划》中强调,要逐步推广编程教学,鼓励培养人工智能人才;《教育信息化2.0行动计划》指出要充实编程课程内容,完善课程方案和课程标准。
编程整体上可以有效促进学生创新思维、数学技能、元认知、空间技能以及推理能力[2]。现有元分析研究也发现编程可显著促进学生认知发展,且形式不同的编程教学对学生的作用效果也不相同[3]。还有一些学者聚焦可视化编程,进一步指出可视化编程教学中编程工具的使用以及学习周期的长短都会显著影响学生学习效果[4]。但目前已有的元分析文献缺少编程对学生计算思维之外的高阶思维技能发展效果因素研究,且效果如何等具体问题还缺乏更清晰的分析。
综合上述,本研究主要从编程教学对青少年高阶思维技能发展的影响角度出发,采用元分析方法,探讨如下问题:(1)青少年编程是否能够促进学生多项高阶思维技能的发展?(2)青少年编程如何有效促进学生某项高阶思维技能发展?(3)哪些教学因素影响促进高阶思维发展?从而进一步发现编程教学存在的优势与不足,为我国青少年编程教学的开展提供建议。
二、文献综述
(一)青少年编程教学
传统的文本编程语言,比如Java、C++和Python,虽然具有与计算机工作思维类似的表达方式,但新手在学习此类编程语言时很容易遇到困难。随着编程教育的不断发展,目前已出现多种编程方式可以让学生更好地学习这项内容。由麻省理工学院开发的Scratch是基于模块的编程工具,提供一种可视化编程环境,可以让学生使用更简单的操作指令来学习某些逻辑概念,完成编程活动。采用Scratch编程教学,可以有效促进学生的创造力、逻辑思维和算法思维[5]。Alice和Mixly等软件也有相似功能,这些编程语言易于理解,以动画形象提供程序的视觉反馈,并且允许学生自己创作动画和游戏。这种可视化编程类型很适合在中小学发展学生计算思维。实体编程(Tangible Programming)是一种基于现实实物的编程活动,具有较强的物理操作性、编程简洁性、现实互动性等特点[6]。不插电编程(Unplugged Programming)属于实体编程的一种,它对学生的能力要求较低,适合小学阶段学生参与。不插电编程活动是指不用编写程序或使用计算机进行的活动,教师一般采用卡片、绳子、游戏或谜题向学生教授编程知识,旨在理解编程原理,感受编程过程的创新和乐趣。另外,电子元件、机器人设计等“通电”的实物编程活动也越来越受到青少年的喜欢,尤其在教育培训机构和课后拓展活动中,其被认为是培养学生编程兴趣的有效手段之一。实体编程可有效促进学生分析问题、解决问题以及沟通合作的能力。在带领学生入门编程时,机器人可以成为一个有效的教学工具。国外学者通过为期两周的Arduino机器人编程项目活动发现,电子机器人设计可显著提高中学生的设计思维能力,并且在关于学生情感的报告上发现,学生对机器人项目开发的自信得到了明显的提高[7]。
编程教学效果一般会受到编程教学策略的影响。我国中小学编程教学一般融入信息技术课程,并且在创客、STEM中也有所体现。其中,最常采用的教学策略就是任务驱动学习,它基于一定真实问题和任务,让学生通过质疑、发现问题,进行调查、分析,从而解决问题、获得知识、掌握方法。与一般任务驱动学习不同的是,项目式学习要求学生在解决问题的基础上完成项目设计,并且教师会对其进行反馈和鼓励学生再创造[8]。游戏化学习也是目前比较普遍的一种编程教学策略。基于游戏的学习是采用游戏形式获得特定学习成果的一种教学活动。这种游戏化的学习环境有助于学生强化学习动机、自我效能感以及学习编程的积极态度等[9]。结对编程是指两名程序员分别扮演不同角色(主要编程者和协助者),共同思考、合作开发一个产品。结对编程学习实质是一种协作学习,主要编程者和协助者的角色不是一成不变的,而是进行周期性的交换,在整个编程项目开发过程中和最终的成绩为双方共同拥有,其被认为是训练编程技能、提高编程质量的重要方法。编程教学中也出现了多种支持新手学习的框架模型,比如抽象层次框架、块模型等。除此之外,传统的授课形式,在编程教学中可能不太受欢迎,因为编程需要学生积极有效的参与和广泛的实践,如果教师只是采用黑板教学或PPT展示,可能只是达到记忆编程概念而不是发展编程相关思维技能的结果。
(二)编程教学中的高阶思维技能培养
理查德.E.迈耶(Richard E. Mayer)等人认为寻找思维技能和编程之间关系的最有效方法就是关注作为编程认知组成部分的高阶思维技能[10]。其中最具代表性的思维技能就是计算思维,它被认为是21世纪每个人都要掌握的基本核心素养,周以真(Wing J M)教授将其定义为一种运用计算机科学概念解决问题、设计系统和理解人类行为的方式[11]。后来有学者将计算思维分为三个维度:计算概念(程序员所使用的概念)、计算实践(在编程过程中出现的解决问题的实践)和计算视角(对自己、他人以及周围技术世界的理解和观念)[12]。国际教育技术协会(International Society for Technology in Education,简称ISTE)则认为,计算思维是一个人解决问题能力的延伸,是培养创造力和批判思维能力的一种手段。算法思维、创新思维、批判思维、合作思维和问题解决能力等是最近计算思维研究中反复强调的五大思维技能。
与以往对计算思维定义不同,新框架强调计算思维对学生高阶思维发展的影响。算法思维指的是通过创造性和逻辑思维正确排序某个流程中的各步骤,包括理解和结构化算法,是在编程开发中的一种关键能力。算法思维能力并不是独立的,它往往与解决问题的能力相结合。创新思维和批判思维在编程教学中也被认为是开发程序和解决问题的重要属性。人们利用批判思维技能(即有效推理、系统思维和证据评估)来处理计算问题,基本上会涉及处理结构、逻辑指令顺序,设计开发问题的解决方案和计算复杂性等,在吸收知识的过程中批判性的分析和创新性的思考极为重要。研究表明,在解决问题的过程中,调动学生学习心理需要包括不同知识元素,并用创造性、批判性和反思性思维来分析和看待它们之间的关系。在不同的教学策略中,合作学习被认为是一种有效学习编程的方法。合作思维涉及学生与小组成员互动、协商、解决问题以及创造新产品的技能。由此发现,编程的计算思维和其他高阶思维技能密切相关,对未来人才培养、人工智能教育非常重要。
三、研究设计
(一)研究方法
元分析(Meta-analysis)是一种量化的文献法,它依据特定主题,通过整理已有的实验研究结果进行统计学再分析。其特点是对统计结果再分析并得出效应量,从而达到提高统计功效、定量评价研究结果、比较和验证研究假设等目的。近年来,循证教育内涵不断丰富,元分析作为其技术手段之一,在教育领域中被广泛应用。许多学者对一些主题的实验研究进行概括、汇总与分析,进而得出可供指导实践的二次证据[13]。本文使用Comprehensive Metaanalysis V2 软件对选取的31项关于青少年编程对思维技能影响效果的实验或准实验研究进行分析,采用标准化平均差(Standardized Mean Difference,SMD)作为效应量。
(二)文献检索
本研究英文数据来源于Web of Science(简称“WoS”)和Scopus数据库,检索类型为“期刊”,按照关键词“编码、编程或编程”(coding or programming or program)、“思维或技能”(thinking or ability)、“研究”(study or research)、 “基础教育”(K-12)进行检索,从2017年1月至2021年12月范围内英文核心期刊共有459篇。中文数据来源于中国知网(CNKI)数据库,检索主题词为“编程教学”,共73篇中文核心期刊。
(三)文献纳入和排除
本研究制定了四条文献纳入和排除标准:(1)研究主题必须是编程对思维技能发展影响的内容。(2)研究对象是青少年且研究在基础教育阶段中小学开展,在幼儿园、大学或其他高等教育机构中开展的相关研究就将会被排除。(3)必须是相关的实验或准实验研究,单组实验需要有前测和后测数据,双组或多组实验必须包括编程教学的实验组和与之对应的普通教学对照组。(4)所选文献数据完整,包括样本量、均值和方差等统计量,从而可以进一步计算效应量标准化平均差。
四、研究结果
(一)检索结果
在完成标准制定后,进行文献检索与筛选(如下页图1),通过阅读题目、摘要和全文后排除了综述类、概念类以及不符合标准的文献,最终本研究选择31篇研究文献,其中国内研究13篇,国外研究18篇。选择的每篇文献中都关注一个或多个思维技能,同时有的文献对同一个思维技能也采用不同的测量过程。因此,最终纳入元分析的可用效应量共有84项。
(二)文献编码
本研究将编程教学作为自变量,将青少年高阶思维技能发展的效果作为因变量。根据对已有文献的整理,其中高阶思维技能具体划分为计算思维、算法思维、合作思维、创新思维、批判思维和问题解决能力。同时将不同学段、不同教学策略、不同编程形式作为调节变量进行编码。编码结果如表1所示。
图1 文献检索与筛选过程
表1 调节变量特征值编码表
(三)发表偏倚检验
元分析需要对文献发表偏倚进行检验,从而降低所纳入的独立研究无法代表该领域总体效果的偏差风险。本研究使用漏斗图作为发表偏倚检验的可视化依据。如图2所示,横坐标是独立研究的效应量,纵坐标是标准误差。漏斗的中线代表本研究中的平均效应值,两条漏斗线包围的区域代表置信区间,圆圈代表产生独立效应量的研究。当研究样本量较小时,说明其研究精度较低,效应量圆圈就会分布在漏斗的底部,且较为分散;反之,大样本的研究效应量圆圈就会分布在漏斗的顶部,并且会向中间聚集。从图中可以看出,研究样本效应量整体呈现出以平均效应值为对称轴的对称性。由此可以说明本研究所选取的文献发表偏倚的可能性较小,所得数据具有较高的可靠性。
图2 发表偏倚检验漏斗图
(四)异质性分析
异质性检验也是元分析中不可缺少的步骤,需要选择不同效应模型来消除样本间的异质性。本研究采用I²(研究间变异所占的比例)统计量来代表研究样本间的异质性,结果如表2 所示,I²为87.388%,Q =658.124 (p = 0.000),其中Q为各研究变异的标准化加权平方和。当I² = 0时,不存在异质性;当I²< 25%时,被认为存在较低异质性;当25%≤I²≤50%,被认为存在中度异质性;当I²>50%时,被认为存在高度异质性。若异质性较低(I²<50%),选择固定效应模型(Fixed Effect Models,简称FEM);当异质性较高时(I²≥50%),选择随机效应模型(Random Effect Models,简称REM)。本研究中I²= 87.388%,证明研究样本之间存在较大的差异性,因此,本研究采用随机效应模型,合并效应量为0.612。
表2 异质性检验结果
(五)编程教学对青少年高阶思维技能发展的整体影响
本研究整体合并效应量为0.612,说明整体上青少年编程教学对其思维发展具有中度促进效果。根据雅各布·科恩(Jacob Cohen)提出的效应量解释标准,当效应量小于0.2时存在轻度影响,效应量在0.2~0.8之间为中度影响,大于0.8为显著影响。
在确定编程教学对学生思维发展整体上具有促进效果的前提下,本研究又对青少年编程教学的计算思维、算法思维、合作思维、创新思维、批判思维以及问题解决能力6个维度进行了效果分析,见表3。按照效应量由高到低排序依次为计算思维(0.919)、算法思维(0.518)、合作思维(0.461)、创新思维(0.453)、批判思维(0.443)、问题解决能力(0.357)。可以发现,青少年编程教学对学生不同思维技能具有明显不同程度的促进效果(Q= 16.125,p= 0.006<0.01),影响最大的是计算思维,相对较小的是问题解决能力,但效应量为0.357说明也具有中度促进效果。同时也可以看出,关注算法思维、合作思维、创新思维、批判思维的相关研究没有整体的计算思维、问题解决能力的研究数量多。
(六)调节变量对青少年高阶思维技能发展的影响
本研究的另一目的,是探讨编程教学中哪些调节变量会对学生高阶思维技能发展产生影响,从而找到青少年编程教学有效开展的办法。因此,本研究针对不同学段、教学策略和编程形式对编程教学中学生高阶思维技能发展的影响进行了进一步分析。
表3 青少年编程教学对思维技能发展的影响
1.不同学段的影响
本研究主要目的是探讨中小学校中编程教学的开展效果,由于小学案例较多,故将其划分为一至三年级的小学—低段和四至六年级的小学—高段。表4结果显示,中学阶段效应量为0.857(Z= 4.503,p<0.001),比小学两个阶段的效应量均高,整体效应达到显著水平。研究结果还表明,小学—低段开展编程教学研究的数量要远远少于小学—高段,但在促进学生能力发展方面的效应量却要更好。从组间差异来看,Q= 5.367(p= 0.068>0.05),表明编程教学对不同学段学生思维技能发展促进作用不存在显著差异。
表4 不同学段中编程教学对青少年思维技能发展的影响
2.不同教学策略的影响
为了考查在编程教学中采用不同教学策略对学生思维技能发展的影响,本研究分别将其划分为游戏化教学、任务驱动性学习、项目式学习、混合教学以及其他数学策略类型。游戏化编程涉及在教学过程中使用多种游戏化的元素,例如积分、闯关、做任务等。本研究中的其他教学策略主要是除此之外的一般教学法,如讲授式。
由表5中可以看出,使用不同编程教学策略对促进学生思维技能发展之间的影响存在差异(Q= 9.962,p= 0.041<0.05)。其中促进效果较大的是游戏化教学(0.872)和混合教学(0.765),相比效果较小的是项目式学习(0.538)和任务驱动性学习(0.485),而其他教学策略的促进效果最差(0.377)。另外,为了进一步了解不同年级编程教学中教学策略的使用情况,本研究又对三个学段中不同教学策略的使用频率进行了对比。其中游戏化教学在小学—低段中使用的频率较高(46.15%),而项目式学习随着年级的增长,使用频率逐渐增加。
表5 不同教学策略对青少年思维技能发展的影响
3.不同编程形式的影响
傅骞等学者认为编程的主要形式为文本编程、图形化编程和实体编程三种[14]。另外,孙立会等将编程工具划分为文本编程、有形编程、教育机器人技术以及图形化编程[15]。所以根据研究,本文结合所纳入的案例,将编程形式分为可视化编程、不插电编程以及电子机器人实体编程。如表6所示,不同编程形式的使用会对学生不同思维技能发展产生差异性效果(Q=7.107,p= 0.029<0.05)。其中整体上按照效应值从高到低依次排序为不插电编程(0.835),电子、机器人实体编程(0.732)和可视化编程(0.483)。
表6 不同编程形式对青少年思维技能发展的影响
五、研究结论
本研究针对31项有关青少年编程高阶思维技能培养的实验和准实验进行了元分析,同时也对相关文献进行了整体梳理,依据二者结果对编程关于青少年高阶思维技能发展的效果进行了客观的讨论。从整体上可以发现编程教学能够有效促进中小学学生高阶思维技能的发展,总体效应值达到0.612,并且对于计算思维、算法思维的促进效果最大。这也再一次证实了编程教学是发展学生计算思维的有效活动手段。另外,在整体效果分析的基础上,本文又将调节变量分为学习学段、教学策略、教授的编程形式三种,具体分析了效果和差异,得出以下结论。
(一)编程教学对青少年高阶思维技能均具有积极促进作用
上述结果表明,编程教学对青少年高阶思维,表现在计算思维、算法思维、合作思维、创新思维、批判思维和问题解决能力均有促进作用,但表现力不同,具体体现在计算思维最佳(0.919)、算法思维、合作思维、创新思维、批判思维分别次之,而在问题解决能力方面最低(0.357)。总体看来,本研究足以证明出编程教学对青少年多种编程高阶思维技能的促进作用。但从效应量来看,编程教学如何在促进其他高阶思维方面进行教学活动或策略的设计,以破解大多数学生在学习编程中都会遇到的困难[16],制订相应的计划和改进教学目标的定位也是必要考虑的因素。
(二)不同变量对学生高阶思维技能发展的调节效应
虽然在学段分类方面,不同年级学生编程思维技能发展的差异性不显著,但整体看来,中学生的效果更好。这可能是因为中学生思维发展的特点符合更深层的编程教学,该阶段的学生抽象逻辑思维逐步占优势,并且辩证思维开始进一步发展。同时,经过小学阶段学习的积累,中学生可以更好地理解和学习到新的、更难的编程知识[17]。但在小学教学中,调查结果发现编程对低段的学生影响效果比高段的好。这说明了在小学教学中还存在着影响学生学习编程的其他因素,阻碍高段学生思维技能的发展。
不同教学策略对学生思维技能发展影响的效果不同,游戏化教学的使用效果最为显著。这可能是因为基于游戏的学习更能吸引学生学习兴趣,减轻学习焦虑[18],从而提高学生的参与度与学习效果。通过游戏来展示学习计划和编程概念,可以刺激学生在学校中完成正式学习[19]。另外,项目式教学的使用比例随着学生年级的提升而增加。项目式教学是近年来较为流行的教学策略之一,它强调问题情境导入、小组合作学习以及产品项目的设计等。
教学中的不同编程形式对于培养学生高阶思维技能方面有着明显的差异性。其中,可视化编程的开展范围较广,但效果却没有不插电编程作用大。不插电编程不需要计算机网络设备,可以离线完成,被认为是学生持续编程的有效起点,因为它的重点是算法——更高级计算机编程的先决条件[20]。因此,不插电编程形式可以改变学生对计算机编程的看法,确保他们重点关注概念和思维。另外,可视化编程作为另一种简化的编程机制,是近年来使用较广的编程教学方式。其用直观的拖放方法取代传统的代码输入,可以为学习者提供支持,从而激励学习者学习。但本研究结果显示,此种编程形式尽管应用广泛,但是效果仍需提升。
六、研究建议
结合元分析和相关文献结果,可以发现编程教学对青少年高阶思维技能的积极促进作用。另外,从本研究的数据分析结果也可以看出,不同的教学学段、教学策略以及编程形式对编程教学会呈现不同的影响效果。因此青少年编程教学可以针对具体教学措施,结合环境、材料、系统等要素,进行合理的规划和设计,以更好地发展学生高阶思维技能,助力新时代人才培养。最后,本研究提出以下启示与建议。
(一)进一步加强基础教育学段编程教学的连贯性,促进思维技能持续发展
整体看来,编程教学在不同学段的效果存在波动现象,这可能是学生学习心理差异、教师教学安排不当或教学目标模糊等原因造成的。编程教学作为发展学生高阶思维技能的重要手段,应在教学实践中加强学段的连贯性,实现学生思维技能持续发展。因此,对于未来编程教学目标的确定和活动的实践,应关注学生心理认知发展规律,了解学习者学习现状,循序渐进,通过合理地、科学地设计教学方案,来保证编程教学对学生在思维技能发展方面的有效性。同时可以通过建立“家校社”多方协同机制[21],丰富编程内容与学习资源,创新编程教学策略方法,激发小学生编程学习兴趣,从而在提高意愿的情况下,提升其教学效果。
(二)关注编程教学中的项目式教学,充分培养问题解决等相关能力
在编程活动中,大多数学生在解决问题、制订计划以及有效实施编程程序方面会遇到困难。目前,项目式教学作为培养学生问题解决能力的有效手段,在教学实践中成为焦点。项目式教学是一种创新型建构主义教学方法,它通过结合真实情境,设置驱动问题,让学生在合作探究中完成项目制作,从而培养学生问题解决等一系列能力。但由于项目式教学实践起来需要花费足够的时间,且中间的评价环节如果不能较好地把握,就会影响其实际的效果[22]。为此,编程教学中的项目式策略,需要进一步结合学情,做到师生共导,用项目引领层级任务[23],引导学生抽象和分解问题,从而锻炼多种编程思维技能的发展。特别是在对学生进行多元评价后,让学生能够有耐心继续修改作品,从而能够完整解决相应问题。
(三)整合多种编程教学形式,追求更高教学价值
结合文献研究发现,在一定程度上,可视化编程有利于培养学生创新思维和操作技能,可以帮助新手在中小学中更快地理解基本编程概念;不插电编程有利于培养学生算法思维和逻辑思维,而且有研究显示,此种教学工具多与游戏化教学相结合,更具有趣味性;而电子元件、机器人实体编程有利于培养学生设计思维和产品开发能力,可以吸引学生注意力,减少学习焦虑。比如,电子机器人实体编程可以与STEM、物理或其他较难的课程相结合,让学生更容易理解和接受课程内容,并且在动手操作的同时提高问题解决以及产品开发的能力。所以,为了追求编程教学高效的价值,结合学生、教学等多方面因素,找到最佳的教学工具从而与教学目标相匹配,也是我们今后实践和研究需要关注的重点。
七、结语
本研究采用了教育领域中比较常用的元分析方法,试图客观分析编程教学对青少年高阶思维技能发展影响的有效性。从数据分析结果中可以发现,整体上编程教学会对学生计算思维、算法思维、合作思维、创新思维、批判思维和问题解决能力起到中等程度的促进作用。同时,本研究还对于编程教学中不同学段、不同教学策略、不同编程形式对思维发展影响的有效性做了进一步分析,希望为我国编程教学普及及相关课程的开展提供一些理论思路。但元分析方法本身存在的局限性,使得研究成果还有待进一步改进和完善,例如考虑定量研究与质性研究相结合的方法,全面分析和理解编程教学对青少年思维技能发展的影响效果。相关方面研究也应开展更多不同年龄段的实证分析,丰富和充实我国编程教育研究。