大学生在线编程学习行为投入与学习效果分析研究
2024-01-19孔祥瑞李明马瑞郑自园
孔祥瑞 李明 马瑞 郑自园
(重庆师范大学 计算机与信息科学学院,重庆 沙坪坝 401331)
近年来,在线学习迅速发展成为教育领域的一个重要板块,多元的学习方式和环境为教学活动的开展带来无限可能。随着计算机技术的发展与应用,程序设计能力已成为包括计算机专业在内所有工科学生的一项基本素养。编程学习是学习者掌握程序设计能力的重要途径,要求学习者理解并运用抽象概念和思维模型来解决实际问题。目前,较多学者开始探索在线学习对教育和学习过程的影响,例如学习效果、知识掌握程度和技能发展等方面的综合评估[1]。对于编程学习效果的评价,主要以网课理论学习、考试成绩和项目开发为主,而编程学习的效果更体现在问题解决能力,应重点关注学生在实践项目中的操作和解决问题的过程。
在高校教育教学活动技术需求的推动下,教育云计算平台的生态发展逐步成熟,EduCoder、LeetCode等平台推出了在线编程实践服务,既免去了繁琐的编程环境配置过程,又可对学习者编程学习行为进行记录,为教育数据挖掘和编程学习行为研究创造了良好条件。多媒体技术的应用有助于计算机教育的方法革新,为学生带来更加丰富的学习体验[2]。
在此背景下,本研究基于EduCoder在线编程实践平台,采集并整理学生在编程学习过程中的行为数据,根据学习者特征进行聚类分析,了解学习者之间的特征差异性,探索编程学习行为与学习效果之间的影响机制,并提出优化编程类课程教学实践的相关建议。
1 研究设计与实施
1.1 在线编程学习行为投入测量指标
目前,国内外学者已对学习行为投入的分析框架进行探索,并对其评价指标进行实证研究,形成了一系列学习行为投入理论模型。Filsecker等将行为、认知、情感纳入其提出的学习投入三维概念框架,并在后续的研究中,将该框架拓展为行为、认知、情感和社交四个维度[3]。国内学者张琪等在总结国外学者的研究后,构建了包含持续性、反思性、主动性与专注性四个维度的评测框架,以表征教育云平台学习者的学习行为投入的水平[4]。张治等构建了以参与、坚持、专注、学术挑战和自我调控为主要维度的分析框架和测量指标,并以小学生在线作业数据为样本进行了有效性检验[5]。
通过对现有的在线学习行为投入分析模型与框架梳理,结合EduCoder平台的实际功能设置,本研究将在线编程学习行为投入划分为参与、专注、坚持、互动和学术挑战五个维度,并对其二级测量指标进行描述,如表1所示。“参与”主要是学生在编程平台学习中投入的时间和精力,表现为实践课出勤和缺勤的次数、平台学习获取的经验值、基本任务点完成率。“专注”体现在实训关卡的练习,包括关卡完成数、闯关过程中消耗的时间、编程效率。“坚持”是指学生在编程中不断试错后仍然能坚持不懈的程度,表现在实训关卡的总调试次数、按时提交实训的次数。“互动”是指学生在平台的项目讨论区中的交流情况,主要体现在学生发布主题数量、回复主题数量和主题被点赞的数量,讨论利于学生解决实训过程中遇到的知识与技术难题。“学术挑战”是指学生在完成基本任务后继续选择参与附加训练的情况,主要包括参与附加训练的次数和附加训练的正确率,反映了学生不断突破自我、迎难而上的学习态度与能力。
表1 在线编程学习行为投入指标框架
学习效果是指学习者在平台完成编程学习后,能够表现出来的实践能力和成果。为了解学生的理论知识掌握程度、程序设计能力和问题解决能力,需要对学生开展考核,主要方式为平台实践测验和理论考试。对学生的实践成绩和理论成绩两项指标进行测量,如表1所示。实践测验和考试成绩均为百分制,最终各取50%相加得出综合成绩,作为本研究的学习效果维度评测指标。最终,以学习效果为因变量,其他维度作为自变量,探索在线编程学习行为投入对学习成效的影响情况。
1.2 研究数据获取
本研究数据来源于EduCoder平台的C语言程序设计实践项目,主要服务对象是有需求学习程序设计的学习者。EduCoder是一个集学、练、评、测一体的信息技术类实践教学平台,为高校和企业提供计算机、大数据、人工智能等专业课程的科教项目和实验开发服务环境。该实践课程包含8个实训章节,共110个练习任务关卡,设定16次签到环节,并开放讨论区板块,学习者可以在讨论区内发布讨论主题进行学习交流。为保证数据获取的准确性,以某院校44名计算机专业学生为教学对象,根据制定的学习行为投入指标体系,对学生在平台中的学习行为数据和学习效果数据进行采集,主要包括考勤、平台经验值、任务点完成率、关卡完成数、综合实训总耗时、编程效率、实训关卡调试次数、实训时效性、讨论区发布主题、回复主题和主题点赞数量、参与附加训练次数和正确率、实践成绩和理论成绩。
2 数据分析与讨论
2.1 描述性统计分析
将获取的数据进行规范化整理,导入SPSS进行描述性统计分析,观察学习者的在线编程学习行为和学习效果的整体特征及分布情况。
2.1.1 在线编程学习行为分析
在参与维度中,主要行为指标为出勤次数、缺勤次数、经验获取值和任务点完成率,其中出勤次数在13—16次之间,平均值为15.45次,标准差为0.791;平台学习经验获取值在2 118—8 995之间,平均值为5 316.45;任务点完成率在94.3%—100%之间,有21人完成率为100%,在95%—99%之间的有22人,仅有1人的完成率在95%以下。通过以上数据分析,可以发现大部分学生都能按时参与到实训中并按时考勤,能全部完成任务点的学生占总人数的47.7%。学生在平台中获取的经验值差距较大,说明该实训项目具有一定的难度,学生在学习过程中经常遇到难题。
在专注维度中,主要行为指标为关卡完成数、综合实训总耗时、编程效率,其中关卡完成数范围在52—110之间,平均值为101.7,标准差为15.875;综合实训总耗时在41.4—496.5小时之间,平均值为168.6小时,标准差为105.9;编程效率在0.62—2.93之间,平均值为1.86,标准差为0.53。说明无论是通过的关卡数,还是消耗的时间上,学习者之间具有较大的差异,同时在闯关过程中消耗的时间越长,其编程的效率就越低,学生对闯关的专注程度会受到影响。
在坚持维度中,主要行为指标有实训关卡调试次数、实训时效性,其中实训关卡调试次数在193—586次之间,将调试次数控制在200次以下的仅有1人,控制在200—300次之间的有39人,300次以上的有4人;在8次实训章节中,每次都能按时提交的人数为6人,能按时提交5次以上的有34人。通过分析可以发现,大部分学生会在出现调试错误的情况下,仍然坚持对代码进行修改并继续提交,然后在不断试错的过程中完成实训任务,能在即使超过提交时间的情况下,继续坚持完成没有通过的关卡任务,最终以超时提交的形式通过章节实训。只有少数学生在超过500次的调试后,仍然无法解决问题,在疲劳之下最终选择放弃,以未通关的结果结束章节实训。
在互动维度中,主要行为指标有发布主题数量、回复主题数量、主题被点赞数量,其中发布主题讨论的数量范围在1—30个之间,平均值为15.6,标准差为6.12;回复主题的数量范围在0—33个之间,标准差为7.07;主题被点赞的数量在8—514次之间,平均值为171.9,标准差为126.1。通过观察数据,可以了解到学习者在编程实训过程中的讨论非常活跃,主要内容是寻求帮助和经验分享,并且点赞量高的帖子其内容质量也较高,能够帮助其他学习者解决困难。但仍然有少数学生孤军奋战,与同学之间的交流较少,因其活跃度较低,所以发布的主题和回复的内容都很难被其他同学发现。
在学术挑战维度中,主要行为指标为参与附加训练和附加训练正确率,项目共有6个附加训练,分布在不同的章节内,但其难度和拓展性要远高于其他关卡训练。其中学生参与附加训练的次数范围在0—6个之间,平均值为2.57,标准差1.65;正确率范围在0.52—1.0之间,平均值为0.83,标准差0.11,正确率在0.8以上的有40人。数据说明,大部分学生能够以较高的正确率完成实训项目,并在完成基本实训任务后,继续选择挑战难度较高的附加训练。
2.1.2 编程学习效果分析
在学习效果方面,主要包含实践成绩和理论成绩两个评测指标。其中实践成绩最高为95分,最低为31分,平均72.1分,标准差为16.1;理论成绩最高97分,最低51分,平均75.7分,标准差为9.823。通过上述数据,可以发现学生的实践成绩和理论成绩都处于较高的水平,较高的学习成绩也反映出了较好的学习效果。
2.2 基于聚类的学习者特征分析
为进一步揭示学习者特征,使用聚类方法对各编程学习行为指标数据进行分析,将学习者划分为不同类型的行为特征群体。因各行为指标数据之间存在较大的数量级差别,为避免出现误差,将数据进行归一化处理,各数据的范围转化成0—1之间的数,起到统一量纲的作用。
首先使用SPSS进行系统聚类分析,采用的聚类方法为组间联接,测量区间为平方欧氏距离。通过聚类后得到聚合系数折线图(见图1),其中横坐标为类别数,纵坐标为聚合系数。通过观察聚类结果可知,当类别数在2—4之间,折线坡度逐渐放缓,聚合系数趋于稳定,可知聚类的类别数在此区间内。
图1 系统聚类结果
为探索具体的类别数,需使用K-Means聚类方法,依次以2—4间三个类别进行分析。通过K-Means聚类结果发现,当类别数为2时,轮廓系数为0.782;类别数为3时,轮廓系统数为0.808;类别数为4时,轮廓系数为0.665。说明当类别为3的时候,聚类效果最优,得出各指标显著性水平如表2所示。各行为指标的显著性水平均小于0.001,表明指标之间存在明显差异。
表2 K-Means聚类分析ANOVA检验结果
依据聚类中心结果,可以得出第一类学习者人数为6人,占总人数的13.6%,这一群体学习态度端正,出勤率高,能高质量提前完成基本学习任务,还能不断挑战高难度的任务,并且均能在极少次的试错过程中高效率解决问题,长期活跃在评论区内,解答其他学习者的问题;第二类学习者人数为34人,占总人数的77.3%,这一群体各项指标与第一类差距不大,基本能按时按量完成各任务节点,但是编程效率和正确率要稍低于第一类学习者,并且试错次数和时间消耗要稍高于第一类学习者,能对附加训练进行少量的尝试,但会经常在评论区发布求助,获取解决问题的办法;第三类学习者人数为4人,占总人数的9.1%,这一类学习者全部指标都远低于其他类别学习者,缺勤次数多,能低质量完成基本任务,不敢尝试附加训练,编程试错次数和消耗的时间最多,从而导致不断放弃未完成的关卡,无法按时提交训练,虽然会在评论区进行少量讨论,但多为无效交流。
2.3 学习效果的多元线性回归分析
为进一步了解学习者特征与学习效果之间的影响机制,以各项在线编程学习行为投入指标为自变量,将实践成绩和理论成绩各取50%并求和,得出综合成绩作为因变量,建立线性回归模型。为减少不必要的变量之间的干扰,选择使用逐步回归方法来进行分析,回归结果如表3和表4所示。
表3 模型摘要e
表4 回归分析系数a
从模型摘要数据可以看出,逐步回归分析最终保留实训总耗时、附加训练、关卡完成数、出勤次数变量。回归模型调整后R方为0.958,整体拟合程度较高。该回归模型的德宾-沃森检验值为1.389,介于0—4之间,说明因变量(学习效果)其残差服从独立性。根据ANOVA方差分析结果,各变量均具有显著性,回归系数均不为0,说明变量之间存在回归关系。通过观察VIF值,发现实训总耗时VIF值为10.779,回归系数为-0.036<0,说明该变量存在共线性,需要排除变量并重新构建回归模型。但在重新检验中发现,排除该变量会明显降低回归模型的拟合度,说明该变量的存在非常必要,因此决定对该变量进行保留。
根据回归模型的各变量回归系数,将其带入多元线性回归方程公式中,可以得到该模型的回归方程如下:
学习效果=32.836-0.036×实训总耗时+2.339×附加训练+0.255×关卡完成数+1.646×出勤次数
观察回归系数可以发现,参与维度的出勤次数、专注维度的关卡完成数和学术挑战维度的附加训练对学习效果具有显著正向影响,而专注维度的实训总耗时对学习效果具有负向影响。
3 研究讨论与建议
3.1 在线编程学习者群体聚类讨论
根据上述学习者特征聚类分析,将44名在线编程学习者划分为三类,通过观察这三类学习者群体的行为特征数据,对其进行定义:(1)第一类学习者定义为“出色突破型”。此类学习者的程序设计思维天赋出众,编程学习充满活力与创造力,有追求知识与技能的动力和热情,拥有高度的主动性去克服学习中的困难与挑战,不断突破自我。教师可以引导此类学习者积极参与到各类计算机技能大赛中,持续培养和提升创新思维与能力。(2)第二类学习者定义为“努力完成型”。此类学习者具有较好的执行力,能够按时完成任务,但无法保证质量,这类学习者不太关注自己的能力或天赋,但他们愿意不断努力尝试来获得成功,能在规定时间内完成基本任务。教师需要为此类学习者树立学习目标,给予一定的赞扬和鼓励,同时协助他们制定可行的学习计划,鼓励学生使用自己的方式去解决问题。(3)第三类学习者定义为“边缘落后型”。此类学习者主要表现在缺乏学习动机和自信心,在学习中遇到困难就会选择放弃,心理素质脆弱,受挫后逐渐失去编程学习兴趣。教师需要重点关注此类学习者,帮助他们端正学习态度,克服困难并重拾信心,重新燃起对学习的热情和兴趣。
3.2 影响在线编程学习效果的关键因素
在编程学习行为投入对学习效果的回归结果中,除实训总耗时外,附加训练、关卡完成数、出勤次数均对学习效果具有正向影响,其中附加训练和关卡完成数的影响程度最高。由此说明,在编程学习中,保持专注的态度并不断挑战和排除困难,就能获得较好的编程学习效果。通过观察“实训总耗时”变量的数据特点,可以发现长时间的编程调试会使学习效率降低,导致其对学习效果产生了负向影响,说明高效率学习才会促进编程技能的提升。同时在保证其他因素不变的情况下,编程学习中的坚持和互动行为,也会对学习效果产生影响,坚持学习可以让学生保持学习的动力与持续进步,互动可以让学生学习更加轻松、愉悦。编程学习的内容和过程都比较复杂,需要学生不断地进行练习和实践,只有坚持不懈才能获得持久的收益。因此,教师可以在编程教学中,合理规划实践任务和活动,设置一定程度的明确的学习目标,打造具有挑战性的学习环境,激励学生发挥潜力。
3.3 建议
3.3.1 完善任务类型,提升学习专注;开展小组协作,加强交互
从线性回归分析结果可知,学生编程学习效果主要受到参与和专注行为的影响,因此需要增强编程学习者该方面的学习行为。专注的学生更能有效地掌握程序设计的理论知识,进而促进编程实践能力的提升。建议平台开通分组编程任务功能,为学习者提供更多的学习参与和交流机会。小组任务的分配有助于促进学生之间的分工合作,实现团队成果的输出,进而提升学生编程训练专注度。这意味着各小组需要同时具备“出色突破型”“努力完成型”和“边缘落后型”三类学习者,以确保成员能力的平衡。积极的学习者带动群体共同进步,从而实现小组所有成员的编程知识与技能的有效内化。
3.3.2 合理划分学习任务,提升编程学习效能感
在编程任务关卡中花费较多时间反而会对学习成绩产生负面影响,这说明实训关卡的难度设置不合理。学生持续面对高难度学习任务,会浪费大量的时间和精力,从而导致学习效率的大幅下降。因此,编程学习任务的难度划分至关重要,建议教学者合理划分学习任务,在保证学生能掌握基础编程知识与技能的情况下,阶梯式逐级拔高难度,以此提升学生编程学习效能感。学习者只有在不断成功解决问题的过程中获得成就感,才会选择挑战更高的任务目标,充分发挥自身学习思维优势。