左冬红 杨宇宽
关键词:汇编指令;线上实验;自动校验
线上教学作为互联网信息技术发展的产物,应用于理论课程非常普遍,在一定程度上缓解了教育发展的地域不平衡问题。实验教学不同于理论教学,需提供针对实验课程个性化的实验环境以及实验过程中所遇个性化问题的解决方案,因此线上实验教学发展速度较慢。但线上实验具有以下优点:1) 不受时空限制;2) 不受实验环境困扰;3) 可利用计算机辅助实验结果检验、实验数据记录、统计、分析,有效减轻实验教学人员工作量[1]。因此,业界仍致力于线上实验教学系统的研究[2-5]。
国内线上实验实践教学平台EduCoder,作为支持计算机专业课程线上实验实践的教学平台[6],通过与计算机专业课程任课教师共同研发,构建了大量线上实验实践教学课程[7-12]。但存在以下问题:1) 若需开设新的线上实验课程,需要联系平台后台研发人员构建新的实验环境;2) 平台评判实践结果输出为纯文字,用户体验不友好。因此,线上实验教学目前流行做法仍然是一课一系统。如近年来教育部及各高校普遍重视虚拟仿真实验建设,建设了一批国家级虚拟仿真实验中心及虚拟仿真实验教学项目,为实验课在线授课储备了硬件设施和教学资源[13]。
微机原理课程MIPS汇编指令教学目标分为:1) 理解指令架构与硬件电路之间的关系;2) 理解C高级语言结构化语句与汇编指令之间的关系;3) 具备利用汇编指令解决实际问题的能力。鉴于此,设计并实现了MIPS汇编指令线上教学实验系统,它支持两大类线上实验:1) 汇编指令程序设计线上实验;2) 汇编指令执行流程仿真线上实验。
1 MIPS 汇编指令线上实验系统整体架构
通过线下线上相结合的方式实验实践,帮助学生达成汇编指令教学目标,MIPS汇编指令线上实验系统功能模块构成如图1所示。该实验系统根据实验任务分为:汇编指令程序设计和汇编指令执行流程两大类实验;根据用户可见性分为:人机交互界面和后台两大类功能模块;同时还支持用户管理和实验行为数据记录等公共业务。
2 MIPS 汇编指令程序设计实验设计
MIPS汇编指令程序设计实验根据实验任务的类型,实验任务手动发布流程如图2所示。
2.2 实验代码检验流程
实验代码检验流程为:1) 根据实验任务类型,生成测试案例初始值对应内存单元、寄存器的初始化汇编指令代码段;2) 在初始化代码段后,插入学生提交的汇编语言代码,生成一个完整的MIPS汇编语言程序;3) 调用MARS API编译,运行该汇编语言程序,并获取运行结果,同时将编译、运行结果信息实时反馈给学生,如图3所示。
实验结果信息反馈分为三种:1) 编译错误,显示编译错误的代码行号和错误信息,并标红提醒;2) 编译正确且代码运行后指定寄存器或内存单元的值与期望值一致,显示回答正确;3) 编译正确但代码运行后指定寄存器或内存单元的值与期望值不完全一致,显示错误的寄存器名称或内存地址,并标红提醒。
3 MIPS 汇编指令执行流程实验
汇编指令运行流程实验采用虚拟仿真方式展示MIPS简单汇编指令集指令在简单指令集MIPS微处理器结构框图中的运行流程,并考核学生的掌握情况,以帮助学生掌握汇编指令与硬件之间的关系。这部分实验任务中的汇编指令代码段以及考核检验都采用自动方式。
3.1 汇编指令代码段自动生成流程
MIPS简单指令集仅包含9条指令,涵盖MIPS汇编指令三种指令编码格式以及三大类不同功能指令。该实验仅关注指令的执行流程,而非代码段的功能,因此不验证生成的代码段功能正确与否。汇编指令代码段自动生成流程如图4所示。
3.2 指令执行过程演示流程
MIPS汇编指令在微处理器结构框图中的执行过程分为五步,演示流程如图5所示。每一步都由用户点击相应按键交互式动态演示执行过程,既支持前进,也支持回退。
3.3 指令执行过程考核流程
指令执行过程考核是检验学生对MIPS汇编指令在MIPS微处理器结构框图中执行过程的掌握程度。考核任务由系统自动智能生成,学生初次参与考核时,所有指令所涉步骤难度系数相同,再次考核时系统根据已完成考核指令回答的正确性,修改对应指令的难度系数,并提高高难度系数指令的考核强度,考核流程如图6所示。
4 实验数据和行为记录
实验数据和行为记录模块记录学生使用本系统时进行的各类操作和实验情况,包括学生登录系统、查看实验任务、编写并提交实验代码、观看指令执行流程演示、参与指令执行流程考核的时间、时长等实验行为以及实验任务完成与否、得分情况等实验数据。
实验行为通过埋点记录学生实验操作的HTTP请求以及操作产生的中间数据,如时间信息、点击次数、代码信息、报错信息等。将这些数据持久化存入数据库,既作为系统运行时反馈给用户的数据,也作为实验教学过程性考核依据,还为今后的实验教学提供参考依据。
5 线上实验系统应用
华中科技大学电信学院2019级、2020级本科生分别在2021年、2022年4—6月份进行的计算机组成原理与接口技术实验课中采用该系统进行了线上汇编指令实验,其中MIPS汇编指令程序设计实验连续试运行两年,MIPS汇编指令执行流程实验运行一年。系统在运行期间基本稳定工作,总宕机时长少于24小时,最大限度地减少了线上实验系统对学生在线学习行为的影响,保证了数据的可靠性,能满足学生利用课余时间进行实验学习的需求。
学生参与线上实验情况数据如图7所示,2021、2022年分别有187、354名学生参与线上实验。MIPS 汇编指令程序设计实验任务参与人次明显高于MIPS 汇编指令执行流程实验任务,这是由于教学要求中将MIPS 汇编指令程序设计实验任务作为必做实验,MIPS汇编指令执行流程实验作为选做实验。
MIPS汇编指令程序设计实验共发布31个实验任务,各个实验任务在两次实验系统运行期间学生的尝试次数分布如图8所示。从图中可以看出,不同实验任务在系统两轮运行期间,学生得到正确实验结果所需尝试的实验次数分布基本一致:尝试次数越多的实验任务对学生而言相关知识难度越高,教师可据此调整教学重点。
6 结束语
本文针对MIPS汇编指令教学目标设计并实现了一个MIPS汇编指令线上实验系统。学生可在线实践MIPS汇编指令程序设计,也可在线学习MIPS汇编指令在单周期MIPS微处理器中的执行过程,并自行考核学习效果。教师可根据教学需求在线随时更新匯编指令程序设计实验任务,并收集学生实验过程中的行为数据,及时了解学生实验情况。线上实验系统所具备的自动检验以及自动根据学生考核状况动态调整汇编指令执行流程的考核内容等功能,极大地减轻了教师实验教学的负担。系统记录的实验行为以及实验过程数据可帮助教师定位教学难点、改进教学方法、提高教学质量。