混合编程促进图形化编程转向文本编程的教学策略

2023-03-12 09:48吴倩意詹泽慧
课程教学研究 2023年11期
关键词:图形化认知结构学习策略

文∣吴倩意 詹泽慧

一、引言

中小学阶段,编程学习的形态主要是图形化编程与文本编程。低年级学生进行图形化编程,高年级学生进行文本编程。[1]编程学习工具从图形化工具到文本编程工具的直接跳转,或给学生编程学习带来困难,影响其后续学习的积极性。[2]姚炯认为从图形化转向文本编程的困难在于文本编程关键字难记、语法难学、语句难写,同时提出不同编程形式解决不同的问题类型和使用不同的认知策略,图形化编程常用于编写游戏或故事,与学生的日常认知习惯相近,而文本编程多用于解决数学问题。[3]

集成图形化编程和文本编程特性的混合编程工具为编程过渡提供了现实基础。它允许用户双向转换编程模式,通过按钮切换分别呈现图形化程序和等效的文本程序。混合编程工具的出现,为有效帮助学生从图形化编程过渡至文本编程提供有利条件。然而,混合编程工具赋能的教学策略,目前尚未有深入的研究。

二、文献综述

(一)编程教学形式:图形化编程与文本编程

文本编程是指采用键盘输入文本进行编程,其抽象性、复杂性对编程初学者有一定的难度[4],常被应用于面向高年级学生开展编程教学实验研究[5]。文本编程学习能够有效提升学生的学业成就[6]和计算思维[7]。但学生在文本编程中易受语义语法困扰而产生编程无助感,降低学生的编程自我效能感[8],承担较高的认知负荷,使学生更容易放弃编程,降低学生的学习动机[9]。文本编程作为编程教学的最高形式,有可以制作大项目、最接近真实形态编程等优点,备受专业程序员的喜爱。

在面向小学、初中开展编程教学实验研究时,一般采用图形化编程[10]。图形化编程有着易构建、易记忆、易阅读、易查找以及避免语法错误等优势,能有效帮助编程新手进行编程学习,增加编程的自我效能感和学习动机[11]。图形化编程教学也能有效提升计算思维[12]。但图形化编程教学仍存在一些缺陷。Meerbaum等人[13]研究图形化编程习惯中发现了使用Scratch编程工具的学生所表现的两个编程习惯都与程序设计实践的要求相矛盾。学生在面对编程任务时,缺乏对算法的优先思考和理解。相反,他们倾向于通过拖拽所有似乎适合用于解决任务的积木块来解决问题,盲目、机械地进行试错编程。此外,图形化编程学生容易过度地分解任务,最后使用冗杂单一的程序结构解决问题。比如,Scratch编程工具适合应用于诸如游戏之类的项目开发以激发学生的学习兴趣,但是通过高颗粒度的编程创建游戏会导致项目中同时包含数百个并发程序,而这些程序对于学生几乎是不可能调试和维护的。当调试过程变得困难和令人沮丧时,学生编写有趣游戏的动机就会消失。

近年来,在编程工具的更新过程中出现了混合编程工具。混合编程是一种不同于纯图形化编程和纯文本编程的新编程模式。它既保留了图形化编程的一些优势,如易构建、易阅读、易记忆和避免语法错误,又支持用户进行文本编程[14][15]。在应用层面,Weintrop和Wilensk[16]通过分析学生使用混合编程工具的编程行为,发现学生在编写程序时可以流畅地在图形化编程和文本编程之间切换。混合编程工具能够在图形化编程向文本编程学习转变的过程中发挥积极作用,但在现有的分析编程形态的研究中,较少探析混合编程的教学问题及应对策略,混合编程在编程过渡期的应用优势缺乏实证研究支持。

(二)图形化编程转向文本编程的学习困境

1.图形化编程依赖

“所见即所得”的可视化编程优势在于激发了编程新手的兴趣,但同时也会让他们产生对图形化编程的依赖性。Disalvo[17]也提出了类似的观点,他认为偏好固然重要,但在不喜欢的界面中也可能学到更多或不同的概念,教师应在教学中引导学生实现教学目标,而非让学生沉溺于对图形化界面的依赖。Lin和Weintrop[18]分析了46个图形化编程平台,发现其程序基本上是按照主题将积木块属性组成类别并以不同颜色区分的。在图形化编程环境下,学生不需要记忆代码编写格式,通过类别查找甚至遍历所有类别就能编程。另外,图形化编程是为特定的领域而设计的,比如游戏、模拟、多媒体等,图形化编程在这些领域的优势在学生从图形化编程转向文本编程后就不再存在。

图形化编程以可视化界面实现了程序运作过程的具象化,学生能拖拽出所有可能实现的积木块,进行盲目、机械的试错编程。试错编程是促进短期编程学习效果的一种有效方式,但在教学评价中无法基于作品的评价确定学生是否理解相关计算思维技能。[19]换言之,因图形化编程所需的学习成本低,学生在用图形化工具时更容易依赖于机械的试错编程。在文本编程中,在没有理解解决问题的逻辑这一本质前提下,学生则无法成功编程解决问题,这意味着当学生从图形化编程转换到文本编程时,试错编程不再能支持学生有效地继续编程学习。

2.模式转换动机弱化

模式转换动机是指学生从图形化编程转向文本编程的意愿。图形化编程的弊端一直被广泛讨论,但学生不一定有所体会。很多文本编程语言是为了通用目的而设计的,它可以应用在各个领域,但图形化编程有其特定的应用领域,最多的是制作游戏和多媒体动画[20]。另外,Weintrop和Wilensky[21]的研究提及图形化编程不适合制作大项目,较难将知识成果转化为实践成果。Brown等人[22]表示图形化编程对于专业人士来说太过笨重,它们是为小型程序设计的,而且纯粹基于鼠标的拖放交互,对于创建和编辑大型程序来说过于烦琐。在以往的图形化编程教学研究中,促进思维能力培养提升的研究占绝大多数,研究设计的学习内容和编程项目都是以能够在图形化编程工具上成功实现为前提。在这样的教学下,学生很难自主发现图形化编程的局限性。

3.文本语言语法障碍

文本编程过程中,尽管平台的调试报错功能可以帮助学生定位程序错误,但有时候编程语言的语义语法障碍会导致算法不能精准地用程序表达出来。比如,Python中的“缩进”,相同逻辑层保持相同的缩进;“:”标记一个新的逻辑层,增加缩进表示进入下一个代码层,减少缩进表示返回上一个代码层。在编程者不明白缩进的语法规则的情况下,运行至此的程序不会进入下一个代码层,也不会在特指的地方返回上一个代码层。对此编译调试不会报错,解决问题的逻辑本质也没有问题,但程序的输出一直不成功。上述例子提及的语法障碍都会引发图形化编程向文本编程过渡时的不良编程体验,降低了学生的编程自我效能感。

三、混合编程促进图形化编程转向文本编程的教学策略

(一)图形化编程转向文本编程的学习认知框架

在认知主义和建构主义学习理论指导下,借鉴皮亚杰、奥苏贝尔等学者在学习认知方面的理论内容,将学生的内部变化分为同化和顺应,外部环境对学生的影响分为机械学习和有意义学习,在内部与外部两个维度上,构成了同化—顺应与机械学习—有意义学习的学习认知过程。基于此,本文提出了学生在编程学习过程中的认知策略,包括同化知识的机械学习策略、顺应知识的机械学习策略、同化知识的有意义学习策略和顺应知识的有意义学习策略。

1.同化知识的机械学习策略

同化知识的机械学习策略是指学生通过机械学习同化知识的学习策略。在所学知识与已有的知识关联性不强的前提下,学生认为所学的知识符合自身的学习意图,但是还没有找到合适的方法产生有意义的学习,只能通过死记硬背学习材料等方式等待质变,产生同化知识的机械学习的认知变化。这种认知学习过程具有较大的指向性,较易发生于目的性较强的学生的学习过程中。

例如,在利用图形化编程构建程序时,其易构建、易阅读的特点导致学生养成了机械试错的不良习惯。如图1(左)所示,学生在解决1到10的求积问题时没有理解循环的次数和变量初始值,出现盲目试错的情况。所以学生没有机会使认知结构中已有的碎片化的、单薄的编程知识在实践中得到巩固。算法理解前置是指学生不再被允许进行试错编程,不能通过机械地搭建程序和试错运行来验证算法的可行性。相反,这要求学生在构建程序前就理解了算法内涵和编程逻辑,因为搭建程序是算法逻辑的具象化。这一过程突破编程形式局限形成的坏习惯,使碎片化的单薄知识得以强化。这种学习策略是在已有的认知结构中融入新知,算法理解没有在新旧知识之间形成联系,所以属于机械学习。

2.顺应知识的机械学习策略

顺应知识的机械学习策略是指在所学知识与已有知识关联性不强的前提下,新知识能够对学生产生引导作用,改变学生内部认知结构,使其产生顺应知识机械学习的认知变化。这种认知学习过程具有较大的随机性,依赖于知识与学生潜在认知意图之间的联系。

例如,从图形化编程转向文本编程时,对于不熟悉的文本编程环境和文本编程语法,学生需要重组认知结构,但进行文本编程时也只能利用特定的文本程序结构或者引用特定值来编程。如图1(右)所示,通过拖拽积木块到文本编程区,会自动生成完整For循环结构,学生在此基础上补充完整循环条件和循环执行语句。完成性编程就是通过提供学生不熟悉的文本程序框架,起到学生记忆该程序结构的作用,也实现了编程正确的程序的功能,但新旧知识之间的联系还不够紧密,仍属于机械学习。

3.同化知识的有意义学习策略

同化知识的有意义学习策略是指在所学知识与已有知识联系紧密的前提下,学生认为所学知识符合自身意图,但并不会改变自身认知结构,而是吸收知识,使自身产生同化知识的有意义学习的认知变化。这种认知学习过程具有较大的必然性,由于学习的发生与学生内部认知结构关联紧密,所以学生通过有意义的学习能够同化新知识。

例如,经过完成性编程后学生对新语言语法不再陌生,并且产生了具有一定弱联系的认知结构,生成性编程则是为了强化和完善认知结构。学生根据不同情况使用合适的循环结构,不再模仿特定结构或者引用特定值,而是按照需求使用更合适的程序结构。学生的知识结构没有发生改变,属于同化知识,但学生已经不需要模仿或者引用特定值,而是有意识地思考适合使用的程序结构,属于有意义的学习。

4.顺应知识的有意义学习策略

顺应知识的有意义学习策略是指在所学知识与已有知识联系紧密的前提下,学生依据所学知识改变自身认知结构,由此发生的就是顺应知识的有意义学习。这种认知学习过程具有一定主观性,即学生在学习与其内部认知结构关联紧密的知识时,具有主观意愿来改变自己的认知结构,因为知识的结构与学生的认知结构是紧密联系的,所以这个过程取决于学生自身。

学生可以由此识破图形化编程的局限,改变认知结构,知道不仅可以使用图形化编程,还可以使用文本编程,并且文本编程具有图形化编程无法实现的诸多功能。对于图形化编程的局限的认知是新知识,并且改变了学生的原有认知结构,属于顺应知识的学习,同时学生模式转换动机被激发的外显行为是主动转换到文本编程界面,尝试完成文本编程中编程任务,这个过程属于有意义的学习。

(二)混合编程促进图形化编程转向文本编程的教学策略

编程教育与计算思维培养息息相关。编程教育是计算思维培养的主要载体,计算思维培养则是编程教育的主要目标。面向问题解决的计算思维框架(如表1所示),可将教学流程分为创设情境与明确问题、分析问题与制订计划、探究学习与设计算法、编程创作与解决问题以及总结归纳与反思评价[23]。

表1 面向问题解决的计算思维框架

混合编程促进图形化编程转向文本编程的教学策略落实在编程衔接阶段,但其策略的效果反映在转换后的文本编程阶段,这体现了教学衔接策略的效果滞后性。通过探究学习与设计算法、编程创作与解决问题、总结归纳与反思评价三个主要编程在教学环节中应用上述的四个编程学习认知策略,教师能够有效帮助学生解决图形化编程依赖、模式转换动机弱化以及文本语言语法障碍三大问题,具体应用如图2所示。

1.前置算法理解

编程教学中普遍存在学生盲目、机械地进行试错编程的现象。学生没有对解决问题的算法进行深度的理解,而只是大概模糊地判断这种方法有可能解决问题,进而通过试错的编程实践直接求证。试错编程是一个先搭建程序再进行算法理解的过程。而验证编程是指编程者理解算法,具体可表现为能口述算法的每一个操作步骤所带来的值的变化,或能在脑海中预测输入输出,而搭建程序是为了验证自己的判断是否正确。这两种方法没有优劣之分,完整地进行整个学习过程后,学生既进行了算法理解,也能编写出正确程序。但是如果学生仅仅以编写出正确程序为目标,经常以试错编程为学习方式,其算法理解是不可靠的,而缺少算法理解本质上是计算概念和计算实践没有真正内化。教师在探究学习与设计算法这一环节时,需要有意识地结合教学法,帮助学生戒除依赖图形化编程、沉迷试错编程的习惯。教师可以使用算法可视化的方式,比如引导学生画出算法流程图、用自己的话描述算法过程、预测输入输出等方式,保证在编程前学生已经进行了算法的设计和理解。

2.组合完成性编程与生成性编程

完成性编程策略,是指提供程序示例帮助学生在没有语法基础的情况下完成编程任务。示例的呈现与实践之间存在着直接、自然的联系,因为示例中的不完整程序不仅说明了新的语言特征及其句法细节,还提供了必须完成的实践任务。学习新语言语法,学生不仅需要重组认知结构(顺应知识),还要能模仿特定结构利用新语言编程解决新问题(机械学习)。生成性编程策略是指学生在没有程序示例的帮助下完成编程任务。但是在学生有前期完成性编程的经历作为基础,并且产生了具有联系的知识结构的前提下,生成性编程则是强化和完善的过程(同化知识),同时生成性编程在没有模板支持的情况下,学生还需要深入地思考使用什么编程结构解决问题,比如“循环结构”也会有“For循环”“While循环”和“Try循环”三种形式,在对比和应用的过程中产生了新旧知识的联系(有意义学习)。教师在编程创作解决问题的教学环节中,可以使用完成性编程和生成性编程的组合策略,在完成性编程过程中,识别编程任务中的编程语法难点,提供语法支架,帮助学生完成编程任务。另外,教师可以拓展任务为学生提供生成性编程机会,或者在大单元教学结束的时候发布拓展编程任务,引导学生进行生成性编程。

3.增加模式转换的动机

模式动机的转换来自学生对比两种编程形式,教师从自身体验中形成评价,意识到图形化编程有其必然的缺点(顺应知识),这是需要教师从编程过程中引导学生发现和总结的(有意义学习)。比如,学生采用图形化编程制作大项目时,会面临拖拽积木块的过程过于烦琐、部分功能无法编程、制作的大项目程序冗余单一且不易于调试、考虑不到编程的时空复杂度等问题。教师可以巧妙地设计能突出图形化编程的缺点和局限的项目,另外在总结归纳和反思评价的环节可以对比图形化编程和文本编程的优缺点,让学生认识到一个专业程序员为什么会选择更难构建、更抽象的文本编程,识破图形化编程的局限,增加模式转换的动机,使学生主动转向文本编程。

四、研究设计

本研究通过对75名初中生开展为期8个学时的编程教学实验,验证教学策略的可行性和有效性。依托编程社团课堂,选取S中学的两个初一班级,其中实验组有37人(男生19人,女生18人),对照组有38人(男生18人,女生20人)。他们的年龄均在12~13岁,属于数字土著,均有动手操作数字化工具的基本能力。全部学生均表示熟悉使用电脑的基本操作,如打字、开关机等。

实验研究采用不相等实验组控制组前中后测准实验的研究设计,前四个学时为混合编程阶段,四个学时后转换至文本编程阶段。实验分组分为实验组和对照组,实验组应用本研究构建的教学衔接策略,对照组则应用传统的教学策略。在实验的前期、中期、后期分别采用问卷调查学生的计算思维[24](Cronbach’s α=0.78)、学习动机[25](Cronbach’s α=0.882)和编程自我效能感[26](Cronbach’s α=0.913)。另外,收集文本编程阶段的所有编程作品进行分析。

首先对实验前测、中测和后测数据分别进行独立样本T检验,其检验结果如图3所示。在实验前期,学生的计算思维的显著性P值为0.706,大于0.05;编程自我效能感的显著性P值为0.852,大于0.05;学习动机的显著性P值为0.095,大于0.05。表示对照组和实验组起始的计算思维、编程自我效能感和学习动机不存在显著差异,即两组起始水平相当,可对实验中期和后期数据继续分析。在实验中期,学生的计算思维(t=0.410,P=0.683)、编程自我效能感(t=0.304,P=0.762)和学习动机(t=0.552,P=0.583)差异不显著。在实验后期,学生的计算思维(t=3.891,P=0.000)、编程自我效能感(t=3.989,P=0.000)和学习动机(t=4.575,P=0.000)差异显著,说明应用所构建的策略可能有效,但还需进行重复测量数据的方差分析进一步验证。

图3 关于实验前、中、后独立样本T检验的概要文件图

主体内效应检验结果显示,当源为“计算思维”时,F值为69.9689,远大于1,显著性P值为0.000,小于0.05,表明随着时间的变化,无论是实验组与对照组,初中学生的计算思维都受到显著影响。当源为“计算思维×组别”时,F值为7.146,远大于1,显著性P值为0.003,小于0.05,表明应用了不同的教学衔接策略,实验组与对照组的计算思维存在显著差异,应用教学策略能显著提升学生的计算思维完全成立。同理,随着时间的变化,实验组和对照组学生编程自我效能感(F=21.889,P=0.000<0.05)与学习动机(F=23.636,P=0.000<0.05)都有显著影响。应用了不同的教学衔接策略,实验组与对照组学生的编程自我效能感变化趋势(F=4.486,P=0.016<0.05)与学习动机变化趋势(F=6.669,P=0.002<0.05)存在显著差异,应用教学策略能显著提升学生的编程自我效能感和学习动机完全成立。

图4所示为在实验前期、中期和后期学生计算思维、编程自我效能感与学习动机的估算边际平均值。从图中可以分别看出在不同教学衔接策略作用下三个因变量的变化趋势,显然不同教学衔接策略对三个因变量平均值的影响不尽相同。在混合编程阶段学习过程中,对照组学生的各因变量水平随着时间的变化都呈上升的趋势,但当转换到文本编程阶段时,各因变量水平开始下降。应用了本研究提出的教学衔接策略后,可以看出,在混合编程阶段,各因变量与对照组的增长曲线相似,但在转向文本编程时,各个因变量相比于对照组,不减反增。

图4 关于三个因变量的概要文件图

在实验的文本编程学习阶段,两个实验组均完成了两个主题项目的编程作品,分别是《递归全排列》和《解决N皇后问题》。本研究收集了对照组(初中生应用传统教学策略组)74份、实验组(初中生应用教学衔接策略组)70份,共144份编程作品。评分员以语法与运行占50%+逻辑与算法占50%的比例进行评分。语法与运行部分由评分员在调试运行时,按照Python报错类型,进行评分记录。逻辑与算法部分则按照Python调试,运行成功输出正确的结果,则得满分,如果输出结果错误,则评分员看程序问题,酌情扣分。最后,本研究取两次项目成绩的平均分作为本次实验在文本编程阶段的编程成绩。探究在图形化编程转向文本编程阶段,应用本研究构建的教学策略对学生编程成绩的影响。独立样本T检验结果为两组编程成绩呈显著差异(t=2.066,P=0.044<0.05),应用本研究提出的教学策略能显著提升学生的编程成绩完全成立。

五、结语

本研究构建的教学策略作用在混合编程阶段,但效果显示在文本编程阶段。在第二阶段的计算思维变化趋势中,应用了教学衔接策略的学生计算思维依然稳步提升,虽然该提升没有统计学意义,但与对照组相比,其变化趋势组间比较是有显著差异的,说明本研究提出的教学衔接策略对学生在编程过渡期计算思维的提升有显著的正向作用。对于编程自我效能感和学习动机,发现两个阶段的增长加速度变化微小,应用教学衔接策略可以有效稳定学生的编程自我效能感和学习动机。

本文立足“人工智能+”的时代背景,通过梳理编程教育、图形化编程转向文本编程等主题的相关研究文献,提出基于混合编程的教学策略,并通过实证研究证明策略的有效性。在未来研究中,以该实证研究为基础,可以通过研究认知特征、学习风格和编程经验等因素,探讨不同类型,在混合编程教学中的表现和学习效果,以个性化的方式来设计和实施混合编程教学。

猜你喜欢
图形化认知结构学习策略
LKJ自动化测试系统图形化技术研究
负迁移与语文认知结构的“千丝万缕”
构建认知结构培养解题能力
高中生数学自主学习策略探讨
托马斯·阿奎那的人类认知结构
运用图形化听写式复习,构建高效地理课堂
一种使用反向学习策略的改进花粉授粉算法
图形化地区电网无功优化软件开发与应用
基于微博的移动学习策略研究
自主学习策略在写作教学中的应用