以工程教育认证为导向的汇编语言课程教学改革
2022-03-18刘向举陈辉
刘向举,陈辉
(安徽理工大学 计算机科学与工程学院,安徽 淮南 232001)
工程教育专业认证是国际通行的工程教育质量保障制度,是实现工程教育国际互认和工程师资格国际互认的重要基础[1],是针对高等教育本科工程类专业开展的一种合格评价机制.2017 年6 月,中国成为工程教育学位互认协议《华盛顿协议》的第18 个正式成员,标志着我国的工程教育已经实现了国际多边互认,为促进高校教育教学改革,提高工程教育质量,培养高素质工程人才提供了新的发展契机[2].因此,参与工程教育认证工作,已成为高校工程教育改革和质量保证体系建设的重要环节[3].
随着工业物联网及嵌入式控制系统的发展,汇编语言在行业中的重要性越来越高.汇编语言是一种最接近于机器语言的编程语言,其操作直接面向计算机的硬件,所以使用汇编语言编程,能够直观地感知、体会和理解计算机的工作原理和逻辑功能,在计算机硬件和软件之间形成了一个清晰的认识.因此,学好汇编语言,向上为理解计算机软件系统的原理奠定了技术理论基础;向下为掌握计算机硬件系统的原理奠定了实践应用基础[4].但从多年的教学实际情况来看,教学效果却不尽如意,与预期还有不小的差距.因此,针对汇编语言的教学现状,以工程教育认证的理念为导向,对汇编语言课程教学方法进行改革,提升学生工程实践能力和解决复杂环境工程问题的能力.
1 汇编语言教学现状
1.1 教学方法不够灵活
由于汇编语言的指令集繁多且抽象、程序编写与调试复杂、程序可读性和结构化差及开发效率低等缺点,同时汇编语言经常涉及CPU、存储器和 I/O 端口等多个硬件处理细节,这些都增加了学习汇编语言的难度,使学生感觉枯燥乏味[5-7].而且很多教师在教学过程中没有及时更新教学理念,采用单一的教学手段、单调的教学模式和落后的教学方法,并且只是围绕课本知识进行讲授,少有结合实际应用进行扩展,这也很难调动学生学习的积极性和主动性,造成教学效果不佳.
1.2 学生对课程重视程度不够
由于高级语言占据了软件开发市场的绝大部分,现今很少有完全用汇编语言进行程序开发.早期的很多应用汇编语言开发的场合也逐渐被高级语言取代,造成很多学生认为学习汇编语言没有用处的认识误区,没有认识到学习是一个系统过程.结果主观上便不重视这门课程,失去了对这门课程的兴趣,导致学习积极性不高,学习的动力不足.
1.3 学生的实践能力弱且实践内容选取不够合理
很多学生书上的程序都能看得懂,基本原理也明白,但是自己编写程序时,却无从下手,甚至连第一条语句该怎么写都不知道.即使能把程序编写完成,在程序调试过程中感觉无所适从.出现了问题,既不知道问题出在哪里,也不知道怎么调试,这些问题主要是由于学生的实践太少,动手能力比较弱造成的.另外,当前汇编语言课程选取的实践内容大部分都不是汇编语言的真正使用场合,如成绩统计、数值排序、求阶乘等实验案例,这些内容只能起到锻炼学生掌握汇编语言的语法功能,无法体现汇编语言的实际应用场合,很难锻炼学生的编程水平和激发学生的学习兴趣[8].
2 基于专业认证理念的教学形式改革
工程教育专业认证的通用标准中指出,课程必须为毕业要求的能力结构提供支撑,学生能力的形成要通过明确的课程内容和教学活动来实现.因此,从3 个方面改革汇编语言课程的教学形式,以符合工程教育专业认证标准的要求.
2.1 通过实践加强理论学习
汇编语言的指令数多达几百条,而且有些指令的语法规则比较复杂,单纯按部就班地一条一条讲解指令及每条指令的语法规则,会非常枯燥和难以理解,学生的学习兴趣会大大降低,达不到理想的教学效果.因此,改变指令的教学环节,不必讲解所有指令,本着够用即可的原则,针对所讲授指令,布置一定量的相关题目,让学生有充足的时间通过实践达到学习指令的目的,而不是通过死记硬背的方式学习指令.这样不但提高了学生的学习兴趣,也加深了对指令的理解,同时使学习内容有的放矢.基本指令学通了、会用了,其它没讲的指令学起来也会非常顺利和“理所当然”了.这种教学方式克服了以往教师讲得“面面俱到”,学生学得“样样不通,索然无味”的问题.
2.2 注重课程之间的融合贯通
相比接近于人的思维方式的高级语言,会感觉汇编语言晦涩难懂,例如:寄存器、寻址方式、中断、I/O 端口等概念在刚接触汇编语言时会感觉难以理解.所以学习汇编语言时联系已学过的高级语言,通过采用高级语言解决问题的一些逻辑思考方式,有助于加快找到使用汇编语言编写程序的思路和方向,达到触类旁通的效果.例如:列出了汇编语言中的一些知识点,在教学中与高级语言相关知识点的联系情况:(1)汇编语言对于内存的操作是基于地址的,可以联想到C 语言指针的概念,将指针和实际的内存单元之间建立思维映射;(2)讲授汇编语言的数据定义及存储器分配伪指令时,如DB,DW,DD 等,联想到C语言中数据类型的char,short,long 等[9],对比它们之间使用的异同;(3)讲授串处理指令时,联想到C语言的相关串处理函数,如字符串复制函数strcpy()/strncpy()函数和字符串比较函数strcmp()函数等,有助于学生使用串处理指令解决实际问题;(4)C 语言程序的逻辑结构有顺序结构(按语句依次执行)、分支结构(IF…THEN…ELSE…语句)和循环结构(FOR…语句)3 种结构,引导学生按照高级语言的思想写出汇编语言的分支结构和循环结构的模板,并作为日后编写汇编程序的通用模板;(5)讲解用基址指针BP(EBP)和堆栈指针SP(ESP)对堆栈操作时,联想到Java 虚拟机中的栈帧等.讲授汇编语言过程中通过联系高级语言,既有助于汇编语言的学习和理解,又加深了对高级语言的理解和运用,它们之间是相辅相成,相互促进的.
2.3 注重与实际应用情境相结合
随着高级语言的快速发展,当今软件开发不可能完全用汇编语言开发[10],但这并不是说汇编语言要被弃之,也不意味着汇编语言已无用武之地.所以在教学中不能完全拿高级语言的一些案例作为汇编语言的实践案例,如排序问题、统计问题等,这些案例虽然经典但缺乏实际意义,不能发挥汇编语言的长处,还要尽量能使用一些能够体现出汇编语言的可用之处的案例.如在教学中引入了教学案例:(1)由于Linux内核的启动部分是采用汇编语言编写,可以阅读分析bootsect.S,Setup.S,Head.S 这3 个启动文件;(2)引入C 语言与汇编语言混合编程的案例,如C 语言调用汇编语言的案例、C 语言内嵌汇编的案例等;(3)利用反汇编软件对PE 文件的分析,实现简单的登陆密码破解;(4)编写简单的软件加密解密的程序;(5)分析简单的病毒程序等.通过引入汇编语言实际应用情境的案例,既让学生真正了解汇编语言的使用场合及理解的汇编语言的优势和特点,又提高了学生的编程能力和应用能力,打消了汇编语言无用的认识,激发学生的学习欲望.
3 基于专业认证理念的课堂教学模式改革
工程教育专业认证的核心理念之一是以学生为中心,以学生学习产出为导向.为达到工程教育认证的这一理念,从3 个方面改革汇编语言课程的课堂教学模式,使学生由被动的接受知识变为主动的获取知识.
3.1 基于PBL 模式的课前预习
课前预习是一种非常重要的学习方式,要养成课前预习的良好学习习惯.而且到了大学阶段课前预习更加必要了,因为大学课堂每次课的内容多,讲课速度快,课堂强度比较大,如果不做好充分的预习,会影响教学效果和学生的学习效果.为了提高课堂效果,在汇编语言教学中采用基于问题学习(Problem Based Learing,PBL)模式的课前预习方式,课前把下次课将要讲授的内容,凝练出具体问题(见表1).表1中列出了部分供学生课前预习的基础问题,让学生带着问题去预习,使学生学习的指向性更加明确,提高了预习的效率,加深对知识点的理解和掌握,也培养了学生的自主学习能力.
表1 课前预习的部分基础问题
3.2 传统教学与翻转课堂相结合
传统的师讲生听、填鸭式的课堂教学模式,会使教学枯燥乏味,课堂沉闷且学生的参与度很低,学生处于被动学习状态,无法激发学生的学习热情.为使学生能够由被动学习变为主动学习,加强学生的参与度,课堂教学采取将传统教学与翻转课堂教学相结合的方式进行.根据教学内容的难易程度及事先布置的预习任务,对于容易理解的教学内容,如X86 的体系结构、存储器分段管理、宏汇编等内容,主要由学生来讲解.学生在讲解的过程中,鼓励其他学生随时提问,并在课堂上进行讨论,这样既能活跃课堂气氛,又能检验学生的预习情况.对于学生容易出错或理论性比较强的教学内容,如数据的寻址方式、指令对标志位的影响、分析机器指令代码等,由教师先讲,然后让学生参与讨论,发表自己的见解和想法,同时提出疑问供大家一起讨论,对于不足之处由学生和教师补充.将传统教学与翻转课堂教学模式相结合,使课堂气氛更加活跃,学生的参与度和学习的积极性明显提高.
3.3 作业互评与成果展示
教师根据授课内容和学习情况定期发布作业,学生除了按时完成作业外,还要对其他学生的作业进行匿名评价.由于课堂时间受限,可以每次选几名学生进行作业互评.学生为了能够准确评价别人的作业,首先自己一定要深入思考,通过作业互评环节不但能够加深对知识点的理解和掌握,也能够了解和学习其他学生解决问题的思路和方法.对于错误率较高的问题,授课教师要及时分析和讲解,并引导学生积极参与讨论.同时对于一些动手能力比较强的学生,引导和鼓励他们积极展示自己所开发的作品,这样不但能够激励开发作品的学生本人,也能够激励其他学生,提高学生的学习热情.对于大家一致好评的作业或能够积极展示自己开发作品的学生,给予一定的奖励.
4 结语
教学改革前后2 个教学年级成绩对比分析见表2,其中2017 级物联网工程专业采用改革前的教学方法,2018 级物联网工程专业采用改革后的教学方法.由表2 可以看出,2018 级优秀的学生比例大幅度提高,而70 分以下及不及格的学生的比例大幅度降低,明显好于2017 级学生的成绩,教学效果取得了较好的改善.
表2 成绩分析比较
汇编语言是计算机及相关专业的核心课程,与计算机体系结构、操作系统等课程有着紧密的联系,是理解计算机系统核心知识的桥梁,也是从事计算机领域研究与应用的基础,在人才培养中起着重要作用.本文以工程教育专业认证理念为导向,在汇编语言课程教学中,尽量克服以往教学过程中存在的问题,培养学生的机器思维、系统思维及实践能力.教学实践表明,本文提出的汇编语言课程的教改方法,能够激发学生的学习兴趣,加强学生对汇编语言的理解和运用,提高解决实际问题的能力,提升汇编语言课程的教学效果.