石念峰
【摘 要】计算机程序阅读能力对编程能力培养有着重要作用。为消除程序阅读对编程初学者造成的认知加载负担,提出一种基于变量角色的计算机程序阅读能力培养方法。利用变量角色技术将初学者程序变量分为11种变量角色,通过动画和图片相结合为编程初学者提供程序阅读支撑。在对照组和实验组中分别采用传统案例式教学方法和变量角色辅助的案例式教学法进行高级语言程序设计课程教学。采用SOLO(Structure of Observed Learning Outcomes)分类评价法对教学效果进行了分析,结果显示实验组学生的程序阅读能力SOLO分值得到显著性提高,期末考试成绩优秀率比对照组高6个百分点。
【关键词】变量角色;编程初学者;程序阅读;SOLO分类评价
0 前言
高级语言程序设计课程是计算机专业一门核心课程,然而计算机专业的学生通常把它列为最难学习的基础课之一。以洛阳理工学院计算机科学与技术专业为例,从2007年到2014年,高级语言程序设计课程的平均不及格率为26.4%[1]。最近研究表明,案例式教学程序案例阅读可以显著提高编程初学者的程序解释能力、程序调试能力和程序编写能力,因为它不但可以帮助编程初学者养成高水平的批判思维,而且有利于培养初学者采用计算思维解决实际问题的能力。然而,案例式教学通常会给编程初学者造成认知加载负担[2]。因此,如何处理好案例式程序设计教学和认知加载负担之间的关系是计算机教育研究热点之一[3]。
变量角色(Roles of Variables, ROV)是一种描述高级程序员如何使用程序变量的技术,它能使编程初学者像专家级编程员一样阅读和编写程序。这为消除案例式教学的认知加载负担提供了一种解决途径[4]。本文将ROV技术和编程案例结合,研究ROV在编程初学者程序阅读能力培养中的教学效果,并采用SOLO(Structure of Observed Learning Outcomes)分類评价法进行了教学评价。
1 变量角色技术
变量角色(Roles of Variables, ROV)最早由芬兰的Sajaniemi教授提出,它被看作是一种提高编程初学者编程学习的认知框架和先验知识[1]。ROV技术认为程序变量的声明、赋值和运算方法具有固定模式,并且99%初学级程序代码种的变量可以采用11种变量角色来描述。每一个变量角色描述了一个变量或者一个数据结构运算过程以及它同其他变量或数据结构之间的关系。
ROV是一种高于编程语言的应用程序知识,可以显式地教授给学生。文献[4]研究表明ROV技术能够通过提高编程初学者的程序调试、阅读和解释能力来培养程序编写能力。更重要的是,借助ROV技术学习程序设计,编程初学者可以像专家级程序员一样更加注重程序结构的深层次理解,而不是只专注编程语言的语法和程序变量基本概念等浅层理解。
2 实验方法及过程
2.1 实验对象
实验对象由57名洛阳理工学院计算机科学与技术专业一年级新生构成,这些受试者全部选修了2013-2014学年第二学期开设的《高级语言程序设计》课程。为了开展实验,首先按照行政班级将57名实验对象分为两个不同的上课班级;然后,由任课老师随机指定一个为对照组,另一个组为实验组。最终实验组和对照组分别有30名和27名学生构成。
2.2 实验方法和过程
《高级语言程序设计》课程共72个课时,其中实验16个课时,理论56个课时。在对照组按照传统的案例式教学方法教学(简称案例式教学),在实验组按照变量角色辅助的案例式教学(简称基于角色教学)。
由于《高级语言程序设计》课程分为理论课和实验课两部分构成,所以实验过程中分别采用了不同的教学方法来提高学生的程序阅读能力和程序编写能力。在理论课上,对照组采用的是传统的案例式教学方法。每次讲完新的知识点后,教师首先让学生阅读一段程序案例代码;然后,教师告诉学生这段代码实现的功能,并讲解在该案例中本次课讲授的编程知识点是如何使用。而在实验组讲授理论课时,除了和对照组一样进行案例式教学外,额外增加了两个教学环节,即:
第一,变量角色学习。在讲解案例前,教师先讲解该案例中出现的新的变量角色,并通过经典代码片段结合变量角色可视化软件(PlanAni系统)的方法,介绍和演示此变量角色。PlanAni系统是个变量角色支持系统,它采用不同的图标表示各种变量角色,并利用动画演示变量值的变化过程。“Stepper”角色被抽象为一串脚印(其中当前步骤为红色)。
第二,基于变量角色识别的案例讲解。在案例讲解过程中,每遇到一个变量,教师都要指出这个变量属于哪一类变量角色,重复它的简单定义和功能,帮助学生理解程序。必要时,使用PlanAni系统重新可视化地介绍此类变量角色。
关于实验课,对照组和实验组的讲授方法略有不同。在对照组,首先教师要求每个学生阅读一段简单案例程序,并互相解释该程序的功能;然后按照要求修改案例代码使其满足更复杂的功能要求。相比之下,在对照组,教师要求学生在讲解简单案例程序时,不但要讲解该程序的功能,还要指出每个变量角色并阐述该变量角色的作用。
在全部课程结束后,对照组和实验组的学生都要求参加一场两个小时的期末考试。期末考试试卷由三部分构成:1)20道填空和10道选择题,用于考查学生编程基本知识掌握情况;2)3道程序阅读题,考查学生的程序阅读能力和解释能力; 3)2道程序编写题,用于评价学生的程序编写能力。
2.3 数据采集及处理
本文采集了两组实验数据:期末考试试卷成绩和程序阅读能力的SOLO分值。由于SOLO分值可以科学和有效地评价学生程序阅读能力[5],所以首先按照献[5]将学生的程序阅读答案划分为前结构层次(P)、单点结构层次(U)、多点结构层次(M)和关联结构层次(R)等四个层次,并按照4、3、2和1的数值量化SOLO分类,得到程序阅读能力SOLO分值数据集。endprint
3 實验结果及分析
首先,采用独立t检测对实验组和对照组学生的期末考试成绩进行了统计分析,评价总体教学效果。从表1所示的分析结果可知,实验组和对照组学生的期末考试成绩存在显著性差异,t(2.61)=55.0,p=0.012。这个实验结果表明,基于角色教学可以提高程序设计课程的教学效果,使学生获得了较好的期末考试成绩,有效降低了程序设计课程的不及格率。
其次,由于程序阅读能力SOLO分值不满足正态分布,所以采用曼-惠特尼U检验对学生的阅读能力SOLO分值进行了分析。从表2可以看出,实验组学生阅读能力SOLO分值(Mdn=3.5)显著高于对照组(Mdn=2.5),U=263.5,p=0.019。同时,实验数据表明,将近37%的实验组学生阅读能力为满分,即达到关联结构层次,而对照组只有17%的学生获得了关联结构层次的能力评价。上述结果说明,基于角色教学方法提高了程序阅读能力的培养教学效果。
4 结论
本文在程序教学中引入ROV技术,利用变量角色来培养编程初学者程序深层理解能力,消除传统案例式教学方法在编程初学者程序阅读中造成的认知加载负担,并采用SOLO评价法对教学效果进行了教学评价。实验结果显示,这种基于ROV辅助的案例式程序设计教学方法,不但提高了编程初学者的课程通过率,而且显著提高了编程初学者的程序阅读能力。
【参考文献】
[1]SHI N,MIN Z,ZHANG P.Effects of visualizing roles of variables with animation and IDE in novice program construction[J]. Telematics and Informatics,2017,34(5):743-54.
[2]MORENO R,MAYER R.Interactive multimodal learning environments [J].Educational Psychology Review,2007,19(3):309-26.
[3]KOHN T.Variable Evaluation:an Exploration of Novice Programmers' Understanding and Common Misconceptions; proceedings of the ACM SIGCSE Technical Symposium on Computer Science Education,Seattle,Washington,USA,F March,2017[C]. ACM: 3017724.
[4]KUITTINEN M, SAJANIEMI J. Teaching roles of variables in elementary programming courses [J]. SIGCSE Bull, 2004, 36(3): 57-61.endprint