学生编程行为分析工具
2022-05-30徐远谋陈奇玖
徐远谋 陈奇玖
当前,很多同学在校外学习编程,部分中小学校也开设了相应的编程课程。教师一般通过查看学生提交的编程作品,归纳作品中出现的高频错误,再在课堂上进行统一讲解。
在编程活动中,每个学生面对同一个问题时,解决方案各不相同。这就意味着,教师需要花费大量的时间分析、指出每个学生可能出现的问题,再提出解决方案。然而教师的精力和时间有限,无法及时纠正每个学生的错误,以致很多学生在学习编程的过程中遇到问题却得不到及时指导,影响了学习效率。
要想改变这一现状,必须加深教师对学生编程行为的了解程度。换言之,需要一种方便教师更好地了解学生编程行为的工具。因此,开发并使用自动数据收集和分析技术,及时掌握学生在编程活动中的行为是非常有必要的。
收集、分析资料后我们发现,学习分析技术能帮助教师解决上述问题。学习分析技术是指收集大量的学生学习数据并进行深度分析,进而评价学生的学习进度、预测其未来的学习表现,并发现其在学习过程中的潜在问题。
如果能将学生编程活动的编程环境整合到学习分析系统中,并追踪其编程的每个步骤,不仅能帮助教师对学生的思维和编程任务的演变过程进行分析,还能让教师及时调整教学内容或方式,加强针对性的辅导。然而,目前学习分析技术应用于学生编程活动进行数据分析的相关研究相对较少。
为此,我们基于鼠标点击流技术,使用Python编程语言,开发了一个收集、分析学生在编程活动中与编程环境交互数据的工具。
一、设计原理
编程行为分析工具收集学生在编程活动中的鼠标轨迹、停留时间等数据,得到在编程环境的不同区域中,学生鼠标停留时间的可视化图形,进而对学生在编程活动中的行为模式进行分析。利用该工具还能发现学生在编程中遇到的问题,有效引导教师有针对性地帮助学生解决问题。
学生运行该工具并按照教师的说明与工具给出的提示进行操作,即可在软件编辑环境中进行区域的划分。然后,工具会自动收集学生在编程过程中鼠标点击的相关数据,并将数据保存为文本文档,通过socket局域网传送到教师端。其工作流程如图1所示。
通过运行该工具的教师端,教师可按照工具给出的提示,选择以柱状图、散点图或热力图的形式,查看每个学生在不同区域的鼠标停留时间,进而对学生的编程行为模式进行分析,及时采取有针对性的措施,提升教学效果。
二、结构组成
编程行为分析工具分为基本信息录入、编程环境区域划分、数据收集和数据的可视化呈现四部分。
1.基本信息录入
学生端电脑开机后,编程行为分析工具即可自动开启运行,并对目标程序(即学生使用的编程软件)进行监测。若监测到目标程序启动,则弹出相应的对话窗口,如图2所示。
学生可以根据提示输入其基本信息(姓名或学号等)登录,之后选择“开始监测”,即可对鼠标点击行为进行监测。这种登录方式不仅简单快捷,而且可在学期结束后有针对性地对学生的编程学习过程进行整体呈现,便于教师指导。
2.编程环境区域划分与数据收集
编程环境区域一般被划分为4个。以慧编程软件为例,分别是舞台区、积木区、角色区和脚本区,如图3所示。
若要更改环境区域,学生可以在程序主界面按照提示选择进入区域划分工具,该工具就会给出相应的提示信息。如图4所示。
学生只需根据提示信息输入需创建的区域个数,并按照提示,将鼠标移动到对应位置确定两个坐标点(分别是矩形区域的左上角顶点和右下角顶点),即可划分一个区域。重复上述过程就可以确定多个区域。
该工具使用两个坐标点确定区域的方法,增加了工具的可移植性,意味着教师可将该工具应用于学生使用的各类编程环境。通过在不同编程环境中对区域的划分进行更改,收集学生在编程中鼠标移动的数据,并对收集的数据进行可视化呈现,教师可识别学生的编程行为,并了解学生的编程学习情况。
待编程环境区域划分完成之后,学生即可进行正常的编程活动。工具在指定的时间间隔内,自动记录存储鼠标的位置坐标数据,分析坐标数据后自动推算出其所处区域。
学生鼠标行为数据库E-R图如图5所示,从图中可以发现基本信息和鼠标行为之间的互动关系。每次互动都包含创建、开启和响应三个阶段,学生在编程中的鼠标行为数据将被统一存放在鼠标行为表中,并与基本信息表相对应。
3.数据的可视化呈现
学生关闭编程软件后,程序自动将鼠标行为数据发送到教师端。教师端通过调用Pyecharts、matplotlib和Pygame三个模块,对学生数据进行可视化转化,以柱状图、散点图和热力图等形式呈现不同学生的鼠标在四个区域停留时间的数据。
柱状图和散点图便于教师理解学生的鼠标点击流数据以及数据之间的关系,快速、直观地读取原始数据。热力图以特殊高亮的形式显示学生鼠标停留的区域,还能通过不同区域颜色的深浅,判断学生在哪些区域中停留的时间最久,进而推断学生在该区域的学习是否遇到困难。
通过对可视化柱状图、散点图和热力图的分析,教师可以了解不同学生的学习情况和整体的疑难点。
三、测试与效果评价
我们邀请几位同学在同一局域网内进行工具的测试。测试项目案例为“弹球游戏”,这几位同学各自在电脑上的慧编程软件中独立、自主地完成“弹球游戏”的制作。
在制作游戏的过程中,编程行为分析工具对被测者鼠标活动的状态进行监测和数据收集。待“弹球游戏”制作完成,退出慧编程软件后,工具将收集的数据发送到教师端,在教师端的程序中成功导出被测者编程数据的柱状图、散点图和热力图。
结合图6中二号同学在编写弹球游戏过程中的散点图和热力图可发现,该同学在屏幕左侧和中间的区域鼠标停留的时间较长。由该同学使用的编程软件慧编程及其分区可分析得出,该同學可能对编程模块的选择以及对展示区对象的调整用时较长。
结合图7中三号同学在编写“弹球游戏”过程中的散点图和热力图可以发现,该同学在调整展示区对象用时较短,对编程模块选择用时较长,在脚本区调整程序顺序的用时也很长。
因上述散点图和热力图只能看出同学编程时在各个区域的使用时间占比,所以还要通过柱状图了解同学的编程总时长。如图8,三号同学整体编程时间久于二号同学,可以推断三号同学在该程序的思维或写法上不如二号同学熟练。
不同的图像也有各自的优缺点,比如:散点图可以看出单位时间内鼠标停留的位置,但不能准确地显示在各个分区停留的时长;柱状图呈现的数据一目了然,但更细致的数据如鼠标停留的具体位置无法展现;……
在测试结束后,我们和参与测试的同学进行了简单的交流,发现通过数据可视化呈现的结果,判断同学可能出现的疑难点与他们实际遇到的疑难点有较高的契合度。这进一步说明了该工具的可行性。
四、结论与展望
在整个项目中,陈奇玖负责编写主要程序,徐远谋负责撰写文稿、组织学生测试。
我们基于鼠标点击流技术,使用Python语言开发的分析学生编程行为工具并进行测试,证明了该工具对学生编程学习状态的可视化有良好的作用,解决了以往相关研究中不能直接监控学生编程活动中的鼠标行为和不能适用于不同编程的软件等问题。
该工具对帮助教师了解学生编程活动中的行为情况有良好的作用,能提高课堂效率,对编程教学,尤其是针对较低年级的编程教学有极大的帮助。今后将扩大参与测试工具的人数,进一步验证工具的有效性。(指导老师:赵明 解蒸 杨楚霜)
专家点评
徐远谋、陈奇玖同学的学生编程行为分析工具,是一个富有前瞻性和生命力的创新课题。
当今,人工智能技术发展迅猛,它是一个以计算机科学为基础,由计算机、心理学、哲学等多学科融合的交叉学科、新兴学科,而编程则是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得出相应结果的过程。因此,编程是人工智能的基础。
两位同学能找到这样的课题并进行实践,旨在突破编程教与学中的難点,其敢想、敢做的创新精神值得推崇。这个课题,从应用前景来看,如果能真正运用好,将给中小学编程教学带来跨越式的发展。
但是,仅将鼠标停留的时间作为学生编程行为分析的依据,其科学性还值得商榷。希望两位同学在课余时间继续探索。
谭迪熬 中国发明协会院士专家咨询工作委员会首任专家,中国发明协会中小学创造教育分会会长,科技创新教育特级教师,教育部国培计划专家库专家。