基于知识图谱的汇编语言程序设计课程教学方法探索
作者: 刘莹 张晓红 信俊昌 杨晓春
摘 要:汇编语言程序设计是高校信息相关专业必修的专业基础课程,在培养学生专业能力方面具有基础性地位和作用。该文根据作者所在教学团队多年的教学经验积累,将知识图谱相关内容应用于教学,从基于知识图谱的知识点梳理、线上线下结合的教学和多维度的实验教学三个方面进行汇编语言程序设计教学方法的探索,给出详尽的教学方案,提升了汇编语言程序设计课程的教学质量,为学生后续硬件课程的学习打下坚实的基础。
关键词:知识图谱;汇编语言;教学方法;知识点;教学质量
中图分类号:G642 文献标志码:A 文章编号:2096-000X(2022)33-0086-04
Abstract: Assembly Language Programming is a compulsory professional basic course for information related majors in colleges and universities. It plays a basic role in cultivating students' professional ability. Based on the teaching experience accumulated by the authors' teaching team for many years, combined with knowledge graph, teaching methods are explored, including knowledge points sorting based on knowledge graph, online and offline teaching, and multi-dimensional experimental teaching. A detailed teaching plan is given, which has further improved the teaching quality of Assembly Language Programming and laid a solid foundation for students' follow-up hardware course.
Keywords: knowledge graph; assembly language; teaching method; knowledge points; teaching quality
当前计算机语言类教学中如何保持学生学习兴趣,激发学生学习动力已成为国内外信息类相关专业高校教师研究的重点问题。Google于2012年提出知识图谱[1],并利用该项技术增强其搜索服务。知识图谱给互联网语义搜索带来了活力,同时也在问答系统中展现出了强大的能力。当前广泛使用的基于知识库搜索、推荐与问答等技术均是基于知识图谱相关知识实现的。将知识图谱相关知识应用于汇编语言程序设计课堂教学领域,通过反复实践,发现经过基于知识图谱的知识点梳理,形成面向学生个性化需求的定制学习路径,再配以线上线下结合教学及多维度实验教学,实现个性化的教学方案,提升了汇编语言程序设计课程的教学质量,为学生后续硬件课程的学习打下了坚实的基础。
一、汇编语言程序设计课程教学概况
汇编语言程序设计是高校信息类专业学生必修的专业基础课程。本课程通过最接近于机器语言的汇编语言让学生认识机器的思维,感知计算机的运行过程和基本原理,进而对计算机硬件和应用程序之间的联系与交互形成一个清晰的认识[2]。但是在教学中,发现学生对于这门课存在着不理解、抵触的心态,这样的心态对于教学产生了阻碍作用,无法很好地完成教学工作,学生也就没法很好地形成一个完整的知识体系。
在信息化高度发展的今天,高级语言占据了主要的地位。与高级语言相比,汇编语言存在指令繁多、程序可读性差和寻址方式多样等问题[3]。同时汇编语言具有与硬件相容性较高,语言结构相对复杂的特点,并且在学习这门课程过程中,上机调试结果并不像其他高级语言那样的明显,这些都使得学生对汇编语言程序设计课程望而却步。
通过多年的教学,发现在现有的教学中,如果将汇编语言作为一门语言,过多地关注指令及其语法知识的教学,会导致课程枯燥晦涩,没有针对性,达不到好的教学效果。因此,将知识图谱相关内容[4-5]应用于汇编教学,探索出新的教学方法,达到提升教学质量、增强教学效果,并通过本文分享在教学上的经验和体会。
二、基于知识图谱的知识点梳理
在汇编语言程序设计教学中,按照程序设计的思路将汇编课程的重要知识点串联成为一个知识体系,但是在教学过程中,我们发现指令系统的教学存在着诸多难点,主要体现在其指令的数量庞大,可以划分为14类92种,但是可记忆性相对较差。如果只将汇编语言作为一门语言,仅仅机械地讲述指令的含义及其语法知识,学生并不能很好地掌握这些指令,就更不要说融会贯通地运用这些指令来设计具有指定功能的程序了。指令系统的教学目标在于让学生能够熟练掌握14类指令,尤其是其中的数据传送、算术运算、逻辑运算、移位、标志位操作、转移、数据串操作、循环控制、调用与返回、输入输出和中断处理这11类指令,这些指令关系到学生是否能够真正设计出汇编语言程序的基础指令。而在指令中操作数的寻址方式又有9种之多,且不同指令的执行会影响到标志寄存器相应的标志位,这些知识点互相关联,组成一个知识网络。如何能够熟练掌握,灵活而巧妙地运用这些指令,除了要求学生在实践中逐步积累经验,在教学中我们也在寻找创新的教学方法,以新技术推动课堂教学的转变,最终达到提升教学质量的目标。为了达成这一目标,运用知识图谱构建的知识网络,使静态知识点的数据与动态教学活动的数据产生关联,为学生的个性化培养提供数据支撑。
在课程教学的过程中,利用相关工具从汇编教学大纲、教材等非结构化文本中抽取知识点作为实体,对知识点之间的关系进行识别,将知识点的重要程度和学习难度作为属性,构建知识图谱,形成可关联性查询的知识网络。在充分了解学生对知识点的掌握情况之下,根据学生的实际情况因人而异地调整教学重点,在知识网络上,运用当代多媒体、人工智能和大数据等新技术形成面向学生个性化需求的定制学习路径,实现个性化的教学方案。构建的乘除法相关指令知识网络图如图1所示。
通过形成可关联性查询的知识网络,对汇编语言相关指令进行梳理,再结合对学生知识掌握情况的调查,我们设计了面向汇编语言程序设计课程学习的推荐系统(图2)来帮助学生掌握指令的特征与要点[6]。我们把面向汇编语言程序设计课程学习的推荐系统划分为面向学生的推荐方案、基于知识点的推荐方案和基于学生描述模型的推荐方案。具体方案如下。
(1)面向学生的推荐方案会为相似偏好的学生推荐他们需要重点学习的知识点。
(2)基于知识点的推荐方案会帮助学生根据自己关注的知识点来匹配和这个知识点相关的知识点,将这些相关的知识点推荐给这名学生。
(3)基于学生描述模型的推荐方案则是通过对某学生一段时间学习的知识点进行整合,建立一个学生描述模型来预测下一步需要推荐的知识点。
面向汇编语言程序设计课程学习的推荐系统采用了一种较为著名和常用的算法——协同过滤算法,在我们的推荐系统中,可以分为基于学生的协同过滤算法和基于知识点的协同过滤算法。利用相关工具从汇编教学大纲、教材等非结构化文本中抽取知识点作为实体,对知识点之间的关系进行识别,将知识点的重要程度和学习难度作为属性,构建知识图谱,形成可关联性查询的知识网络,从而解决了处理过程中可能出现的稀疏性和冷启动问题。具体而言,知识图谱引入丰富的语义关系,方便面向汇编语言程序设计课程学习的推荐系统深入发掘学生与知识点之间的关联。此外,知识网络中多样化的关系链接,也可以避免面向汇编语言程序设计课程学习的推荐系统给出过于单一的推荐结果,形成面向学生的个性化推荐方案。同时,知识图谱的三元组结构包含的关系信息提高了面向汇编语言程序设计课程学习的推荐系统推荐结果的可解释性。面向汇编语言程序设计课程学习的推荐系统工作流程如图3所示。
三、线上线下结合的教学
汇编语言是一种强有力的语言,其能透彻地反映、巧妙而充分地运用计算机的硬件功能及特点,并且汇编语言与硬件联系紧密,但是需要学生对计算机的底层有较为深刻地了解。教学中,教师需要在有限的课时讲述大量的指令,这无论是对于教师,还是对于学生,都是极大的考验[7]。对于习惯高级语言的学生来说,汇编的指令与之前学过的高级语言语句大相径庭,毫无头绪,容易丧失学习兴趣。因此,我们在教学过程中结合前述的推荐系统给出有针对性的知识点,突出重点,有目标地展开课程,充分发挥视听多媒体的优势,对数据存储、进栈和出栈等过程,跟踪程序运行,给出存储器存储内容以及堆栈内容的变化,使学生能对程序执行过程有一个直观的印象。对于一些程序的代码,教师会结合课程中上机调试的相关知识,用DEBUG来跟踪检查程序,让枯燥的内容与实际操作相结合,同时鼓励学生也在手边的电脑上面操作,增加了学生动手的机会,让学生乐于自己去实践,同时也增加了师生的互动环节。
在丰富教学手段的基础上,受2020年新冠肺炎疫情期间线上教学的启发,在汇编教学中应用MOOC(大型开放式网络课程)平台,突破了传统课程时间、空间的限制,突破了传统教学中固定化、统一化的教学进度,学生在一定程度上掌握了自己学习的进度,实现了面向学生个性化需求的定制学习路径。学生可以根据前述推荐系统给出的方案有针对性地学习的相关内容,在整个学习过程,学生充分发挥了主观能动性,提高了学习效率。
另外,除了通过课上程序调试的环节增加师生互动外,我们也将答疑这个环节充分利用了起来。在传统教学中,学生的答疑一般在每次课讲述之后,时间较短,且仅有很少部分同学参与。通过启用网络教学中使用的平台进行答疑,将答疑贯穿到课程教学的全过程,平台特有的匿名提问也让部分胆小与害羞的学生能够大胆提问。由于大部分提问是为大家所见的,在方便大家讨论的同时,也给有相同问题的同学以启迪,同学们在互相讨论的过程中加深了理解,增加了互动性。
四、多维度的实验教学
上机实验是汇编语言程序设计课程的基本教学组成部分,教学团队非常重视实验教学对学生动手能力的培养,帮助学生把所学的理论知识充分运用到实验中,从中体会到汇编程序实际运行的原理。学生可以通过实验,巩固课堂上学到的理论知识,做到理论与实践相结合,增长对计算机硬件类课程和相关研究方向的兴趣,提高自身的工程实践能力[8]。
从以下多个维度对实验教学方法进行了探索,这些维度包括实验工具的优化、实验教学方法的优化及实验考核方式的优化。
在实验工具的优化中,依托学校的国家级计算机实验教学示范中心开展实验,针对当前学生普遍使用的电脑都安装64位操作系统Windows 10乃至Windows 11这一现状,选取了DosBox+MASM for Windows作为汇编开发环境,实现了从实验室到个人电脑的无缝对接,学生可以随时随地编写程序,将原本只能在机房里做的实验扩展到有电脑的地方随时可以编程调试。
在实验教学方法优化中,教师在课内讲重点、关键点和要点,掌握好学生实验的方向,在实验中注重对学生实验方法和创新能力的培养。实验中,实验指导教师只给出实验题目,学生独自设计实验方案,充分发挥学生的主观能动作用,最大限度地调动学生自己动手的积极性和主动性。
在实验考核方式的优化中,传统的实验考核通常以纸质实验报告的成绩为主,这种考核方式导致学生出现抄袭、作业雷同的现象,不能体现学生的实际操作能力。因此我们对于实验考核方式进行了优化,一是在电子版实验报告中必须给出相应程序算法的描述和流程图;二是在实验验收中增加上机调试的环节,根据要求在限定的时间内完成相关程序的修改,并提交程序源代码、运行过程和结果的截图,进一步提升实验考核的真实性和合理性。