摘要:在计算素养至关重要的时代,全球许多中小学校均在强调编程教育的重要性。基于块(BPM)和基于文本编程(TPM)是编程教学中最主要的两种编程模式,然而鲜有研究从学习过程和学习结果相结合的角度探究这两种编程模式的差异,本研究旨在通过准实验设计,比较中学生在这两种模式下的编程行为和计算思维水平。研究发现:①TPM学习者遇到了更多的语法错误,调试时间间隔更长,相比之下,BPM学习者通过调整编程块进行更多的代码修改,进行更多次调试,并表现出更多的无关行为;②BPM学习者在计算思维水平上显著优于TPM学习者;③通过对学生在两种编程模式下的行为分析,识别出了代码修改者、最少调试者、最多调试者、分心编程者和平均表现者五类学生。最后,研究根据结果讨论了相关的教育启示。
关键词:基于文本编程模式;基于块编程模式;计算思维;编程行为
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2024)14-0009-06
引言
计算思维是21世纪中小学生不可或缺的一项能力,中国、美国和英国等国家已将编程教育纳入其中小学课程[1],编程主要采用两种核心方法:基于块编程模式(BPM)和基于文本编程模式(TPM)。[2]BPM利用视觉辅助工具,使其更容易被初学者所接受,而TPM可以辅助学习者完成专业的编程任务。[3]已有研究尽管评估了学生在学习BPM和TPM方面的差异,但缺乏从学习过程的角度探究不同编程模式如何影响编程学习效果的研究,因此,了解每种模式各自的特征以及它们如何有效地促进学生的学习至关重要。[4]本研究旨在通过研究中学生在两种模式中的编程行为和计算思维水平,来评估编程模式对编程学习效果的影响,相关研究发现它可以指导教育工作者设计更有效的教学方法,以提升学生的编程技能,发展学生的计算思维。
文献综述
1.基于块和基于文本编程
图灵奖获得者迪科斯彻(Dijkstra)强调,我们使用的工具正在塑造我们对事物的认知能力,这一原则能够迁移到编程模式对学生思维方面的影响上,因此,如何运用编程工具的ddc3342ac6b9ee3514bd6a86d4e5a583模式是编程教育工作者需要考虑的一个关键因素。基于块和基于文本编程在中小学编程教育中被广泛使用,基于块编程利用原始的拼图法(programming-primitive-as-puzzle-piece)使得编程行为更为简易和直观,从而简化使用并避免语法错误,对于新手学习者来说十分友好,如Blockly、Alice等多个基于块编程平台旨在通过降低语法复杂性来降低编程学习的难度。由于具有这些优势,基于块编程被认为是新手学习者开展入门编程学习的首选。相较而言,尤其是对已经具备理解文本代码语法和逻辑能力的高阶学习者来说,基于文本编程更受欢迎,他们认为基于文本编程在其编程过程中更加接近真实的产业应用场景并且功能更加强大。基于文本编程提供了高阶编程学习和参与专业工作的机会,而这些可能是基于块编程无法实现的。然而,在基于文本编程学习的过程中,学习者经常遇到语法错误以及感受到挫败感,导致相关课程的辍学率更高。因此,研究者尝试采用各种教学策略来提高学生对基于文本编程的学习兴趣和学习动力。[5]
2.计算思维与编程教育
计算思维(Computational Thinking)的概念可分为特定领域的定义以及通用领域的定义。前者涉及解决计算机科学或编程中专业问题的知识和技能,如周以真教授指出,计算思维是运用计算机科学的基础概念进行问题解决、系统设计,以及理解人类行为的思维过程[6],特定领域的计算思维可以采用Dr.Scratch或Bebras测试等工具进行评估;后者将计算思维视为通用问题解决方面的能力,受到更高层次的元认知技能调节,包含创造力、算法思维、批判性思维、问题解决能力和协作能力等,已有研究人员开发了成熟的量表对学生进行评估。[7]已有的关于不同编程模式教学效果的研究通常对学习者的知识掌握程度进行评估,而较少关注学习者的高阶思维能力发展。因此,在探究不同编程模式的差异时,计算思维是一个重要的考虑因素。
可见,探究基于块编程和基于文本编程对学习者编程学习的影响是一个重要的研究课题。因此,本研究将通过采集学习者在基于块和基于文本编程学习过程中的细粒度数据,来分析不同编程模式对其编程行为和计算思维水平的影响。
方法
1.研究目的和问题
本研究旨在通过在中学开展准实验研究,收集包括学习日志和计算思维测试在内的数据,并使用统计分析和聚类分析等方法来比较学习者在基于块和基于文本编程过程中的编程行为和计算思维水平。研究结果将为未来的计算机编程教学提供策略上借鉴和启示。具体的研究问题是:
研究问题1:学习者在基于块和基于文本编程学习过程中的编程行为存在什么差异?
研究问题2:学习者在基于块和基于文本编程学习中的计算思维水平存在什么差异?
2.教育背景
研究在2020年秋季学期的信息技术课中进行,采用准实验设计的方式探究学习者在基于块和基于文本编程中的编程行为和计算思维水平的差异。BPM班和TPM班均有32名学习者。学生年龄在13岁左右,他们中的大多数人没有接受过正式的编程教育。课程由同一位教师开展授课,教师在两种模式下保持相似的教学风格,向学习者提供相同主题的教学材料(内容通过BPM或TPM的形式呈现),并在每个班级开展相同的教学实践。
该课程包括三个阶段和六个教学课时,每个课程持续45分钟。第一阶段教师介绍了编程基础知识以及基于块或基于文本编程的概念。第二阶段教师在指定的编程模式中使用顺序、选择、循环和函数结构开展编程教学。第三阶段是一系列综合项目,旨在测试学习者在第二阶段学习的编程知识和技能。研究使用的平台是自我改编的Code4all(如下页图1)平台,这是一个由PencilCode开发的环境,同时支持基于块和基于文本编程。但是,与PencilCode不同的是,为了便于研究的开展,Code4all不允许学习者切换基于块或基于文本编程的界面。因此,BPM学习者通过拖拽编程块进行编程,而TPM学习者采用逐字输入的形式进行代码编写。除了编程模式之外,平台其他元素均是相同的,包括功能菜单、界面和环境脚手架。
3.数据收集
为了解学习者的编程学习表现,研究收集了平台日志和学生的计算思维测试数据。计算思维测试工具改编自科尔克马兹(Korkmaz)等人在2017年开发的计算思维量表(CTS)[8],包含五个因子(创造力、算法思维、合作性、批判性思维和问题解决能力)共计22个测试题目。值得注意的是,已有学者将该量表在中国中小学阶段的学习者中进行了验证。[9]
4.数据分析
研究采用统计分析和聚类分析等多种方法考察了BPM和TPM对学习者编程学习效果的影响。首先,研究根据提取的变量和前人的研究[10]确定了五种编程行为:平均代码更改次数(AnC)、无关行为次数(NoIB)、调试次数(NoD)、两次调试之间的平均时间(AtD)和错误次数(NoE)。值得注意的是,尽管学习者以不同的编程模式进行编程,但Code4all平台记录的编码均为文本格式。研究采用描述性统计呈现了BPM和TPM学习者编程行为分布的总体情况,为了从复杂的数据中发现隐藏的模式,研究进一步采用学习者日志数据进行聚类,并在每个聚类中分析学习者的编程行为。笔者采用了经典的K-means算法,该算法包括最佳聚类数量选择、变量选择、数据标准化和初始聚类中心选择,研究采用RapidMiner和Python来进行聚类。[11]此外,研究采用独立样本T检验来分析BPM和TPM学生在计算思维水平上的差异。
结论
1.两种模式下学习者的编程行为
表1的结果显示,在两种编程模式下,学习者的编程行为存在明显差异。其中,TPM学习者遇到的语法错误(NoE:M=8.81,SD=20.17)多于BPM学习者(NoE:M=4.97,SD=5.31)。学习者在TPM中两次点击调试按钮所花费的平均时间(AtD:M=84.74,SD=83.35)几乎是BPM中学习者的两倍(AtD:M=46.97,SD=32.19)。此外,学习者在BPM中的平均代码更改次数(AnC:M=25.80,SD=15.93)略高于在TPM中的平均代码更改次数(AnC:M=24.81,SD=39.33)。BPM学习者点击调试按钮的次数(NoD:M=37.73,SD=20.25)高于TPM学习者点击调试按钮的次数(NoD:M=32.03,SD=43.06)。BPM学习者的无关行为(NoIB:M=35.20,SD=24.06)多于TPM学习者的无关行为(NoIB:M=25.53,SD=17.26)。
为了进一步探究学习者在两种编程模式下的学习行为差异,笔者利用表1中的数据对学习者进行了聚类。以往的研究发现,利用编程课程的细粒度行为数据可以抽取出一定的模式。在本研究中,K-means聚类在第10次迭代时达到了收敛,k=5为最佳值,轮廓系数最高(0.57)。因此,所有学习者被分成五个聚类,其中23.44%的学习者被分配到第1个聚类,20.31%的学习者被分配到第2个聚类,3.12%的学习者被分配到第3个聚类,6.25%的学习者被分配到第4个聚类,46.88%的学习者被分配到第5个聚类。
比较五个聚类的特征可以发现,聚类1被标识为“代码修改者”,他们的代码修改次数(AnC:M=44.53,SD=10.69)和调试点击次数(NoD:M=60.73,SD=11.28)在五个聚类中排名第二,无关行为次数(NoIB:M=23.73,SD=12.09)在五个聚类中排名第二,错误次数(NoE:M=10.67,SD=7.89)在五个聚类中排名中等。根据聚类分析发现,有5名TPM学生和10名BPM学生被归入该聚类。聚类2被标识为“最少调试者”,学生两次点击调试的时间间隔最长(AtD:M=174.43,SD=72.95),代码更改频率(AnC:M=4.00,SD=2.45)、点击调试次数(NoD:M=7.69,SD=3.73)和错误次数(NoE:M=0.38,SD=0.62)最低。根据聚类分析结果,该聚类包括10名TPM学生和3名BPM学生。此外,2名TPM学生被分配到聚类3,该群组被标识为“最多调试者”,他们的代码更改次数(AnC:M=162.00,SD=35.00)和调试次数(NoD:M=179.50,SD=40.50)在五个聚类中最高,他们遇到的错误次数(NoE:M=82.00,SD=14.00)在五个聚类中最高,而无关行为的数量(NoIB:M=14.78,SD=10.78)在五个聚类中最少。第4组被标识为“分心编程者”,其无关行为最多(NoIB:M=84.25,SD=11.09),调试次数少(NoD:M=10.00,SD=11.47),错误发生次数中等(NoE:M=11.75,SD=3.47)。该聚类包括2名TPM学生和2名BPM学生。聚类5被认定为“平均表现者”,其代码更改频率、调试次数、错误次数、无关行为以及两次点击调试之间的时间间隔在五个聚类中处于平均水平。
2.两种编程模式下学习者的计算思维水平差异
TPM和BPM学习者在研究干预前的计算思维水平没有显著差异(创造力:p=0.286;算法思维:p=0.185;合作能力:p=0.217;批判性思维:p=0.067;问题解决能力:p=0.095;整体计算思维技能:p=0.941)。在研究干预后,BPM学习者在算法思维(t=3.23,p=0.002)、合作能力(t=-2.11,p=0.038)、问题解决能力(t=-2.72,p=0.008)和总体计算思维水平(t=-2.58,p=0.012)方面均显著优于TPM学习者(如下页表2)。
讨论
随着编程教育的日益普及,探究学习者如何在两种典型编程模式(基于块和基于文本编程)下开展学习的研究逐渐受到重视。本研究通过收集多模态数据分析两种编程模式中学习者的编程行为和计算思维水平。针对研究问题1,本研究发现,基于文本编程模式中的学习者遇到了更多语法错误,调试的时间间隔更长;基于块编程模式中的学习者在代码修改(操作编程块和调整参数)上花费了更多的时间,并进行了更频繁的调试,然而也存在更多的无关行为。基于学习者的编程行为,本研究揭示了基于学生编程行为的五个聚类,包括代码修改者、最少调试者、最多调试者、分心编程者和平均表现者。因此,针对不同类型的学习者,教师应当提供切实的教学干预和学习支架来对其进行引导。[5]
针对不同编程模式中学习者的计算思维水平分析表明,基于块编程模式中的学习者在算法思维、合作能力和整体计算思维能力方面表现显著优于基于文本编程模式中的学习者。究其原因,基于块编程模式开发的编程平台或系统(如Scratch或Blockly)能够让学习者看到更为直观的编程效果,有助于学习者理解基本编程概念和发展算法思维。此外,这类平台提供了一定的辅助工具来促进计算思维的发展,如编程平台讨论区承载的沟通、合作和社交技能等功能。需要注意的是,从长远开展编程学习的角度来看,基于块编程模式开发的平台依赖于预先构建的代码块,可能会限制其能够解决问题的难度。尽管学习者可能会遇到更多的语法问题,但基于文本编程语言(如Python)需要学习者灵活运用各种问题解决方式,自主编写代码并进行调试,这对发展学习者的计算思维和提升学习者的解决问题能力具有至关重要的影响,如促使学习者更深入地理解编程概念,并熟练地剖析和解决编程问题。[12]
结语
深入探究不同编程模式的差异能够为编程教育的开展和学习者的计算思维水平提升等提供坚实的理论和实践基础。这项在中学进行的准实验研究比较了基于块和基于文本编程模式对学习者编程行为和计算思维水平的影响,并针对研究发现进行了深入的探讨。然而,本研究仍存在一定的局限:一是研究样本的代表性不足;二是研究采用问卷的形式收集计算思维数据,而不同的学生对量表中内容的理解和感知情况可能存在一定的差异;三是多模态数据的采集维度不够丰富。因此,未来研究将拓展研究对象,采用混合数据分析的方法来对定性和定量数据进行协同分析,以深入研究学习者在基于块和基于文本编程学习过程中的行为、认知、元认知和社交活动。整体而言,本研究探讨了基于块与基于文本编程模式的差异,为有效开展中小学编程教育和提升学习者的计算思维水平提供了宝贵的经验。
参考文献:
[1]孙丹,李艳.国内外青少年编程教育的发展现状、研究热点及启示——兼论智能时代我国编程教育的实施策略[J].远程教育杂志,2019,37(03):47-60.
[2]Jocius,Robin,O’Byrne,W.Ian,ect.Infusing computational thinking into STEM teaching:From professional development to classroom practice[J].Educational Technology & Society,2021,24(04):166-179.
[3]Weintrop,David,Wilensky,ect.Transitioning from introductory block-based and text-based environments to professional programming languages in high school computer science classrooms[J].Computers&Education,201,9142(103646):1-17.
[4]Grover,Shuchi.Teaching and assessing for transfer from block-to-text programming in middle school computer science[C].Transfer of learning,Transfer of learning.Research in mathematics education.2021,Springer,Cham.
[5]Sun,Dan,Ouyang,ect.Three contrasting pairs’collaborative programming processes in China’s secondary education[J].Journal of Educational Computing Research,2021(08):54.
[6]Wing,Jeannette(2014).Computational thinking benefits society[EB/OL].http://socialissues.cs.toronto.edu/index.html.
[7]Román-González,Marcos,Pérez-González,ect.Which cognitive abilities underlie computational thinking? Criterion validity of the computational thinking test[J].Computers in Human Behavior,2017,72:678-691.
[8]Korkmaz,zgen,akir,ect.A validity and reliability study of the computational thinking scales(CTS)[J].Computers in Human Behavior,2017,72:558-569.
[9]白雪梅,顾小清.K12阶段学生计算思维评价工具构建与应用[J].中国电化教育,2019(10):83-90.
[10]Pereira,Filipe D.,Oliveira,ect.Using learning analytics in the Amazonas:Understanding students’behaviour in introductory programming[J].British Journal of Educational Technology,2020,51(04):955-972.
[11]Rousseeuw,Peter J.Silhouettes:A graphical aid to the interpretation and validation of cluster analysis[J].Journal of Computational and Applied Mathematics,1987,20:530–65.
[12]KÖlling,Michael,Brown,ect.Proceedings of the workshop in primary and secondary computing education[C].ACM,2015,29-38.
第一作者简介:戚展研(2005.6—),女,汉族,浙江杭州人,本科生,研究方向为人工智能教育。
基金项目:2023年国家自然科学基金青年项目“基于多模态知识图谱的青少年编程学习自适应推荐及关键技术研究”(项目编号:62307011)。