APP下载

大型机汇编语言实验教学改革探讨

2018-03-31朱大勇李树全侯晓荣

实验科学与技术 2018年1期
关键词:汇编语言实验课编程

朱大勇,李树全,侯晓荣

(电子科技大学 a.信息与软件工程学院;b.能源与科学工程学院,四川 成都 610054)

大型机汇编语言作为面向大型机的底层编程语言,是大型主机方向的专业必修课程。尽管通过课堂教学和作业练习,学生能够掌握常用的汇编指令和程序结构,加深对大型机内部结构和操作系统的理解[1-2],但是,只有通过编程实践才能真正将所学知识应用于解决实际问题,同时训练学生的编程思维,锻炼编程技能,提高程序设计水平。因此,实验教学在大型机汇编语言课程中起到了非常重要的作用。

传统的汇编语言实验教学通常给出几个独立的实验(如数值运算、进制转换及字符串处理等),让学生自己动脑动手根据实验要求编写程序[3]。实验题目是课堂上已讲过例子的变形,或者是作业中的类似例题。通常每个实验只是针对课程的部分知识点进行检验和编程训练,使得各个实验之间相互脱节,很难形成一个完成的系统把整个课程的知识及可能涉及的其他课程内容连贯起来。虽然学生完成了实验,却常常反映自己清楚指令干什么,知道编写汇编程序的方式,但是在面对实际的工程问题时却不知道该如何去分析求解。此外,学生在实验过程中的表现、交流沟通以及创新能力等综合素质也难以在传统的实验模式中做出合理的评价。文献[3]在汇编程序中采用结构化程序设计方法和反汇编方式开展实验教学,让学生能以熟悉的编程方式来学习汇编,降低了汇编实验的入门难度,但是对个性化教学缺少探讨。文献[4]主要分析了汇编实验教学中存在的教学模式僵化、实验方法陈旧及难以激发学生兴趣等问题,给出了实验改革的几项措施,但对具体的实验内容和过程缺少实例。文献[5]以MASM宏汇编系统及调试工具,结合算法给出了实验实例和授课方法,让学生对数据结构和算法加深了理解。目前大量的汇编语言实验教学是建立在8086系列系统上,很少有文献涉及大型主机汇编语言的实验。

针对以上问题,本文依据翻转课堂的思路[6],以灵活应用课程知识,掌握技能,加强编程思维训练为教学目标,在大型机汇编语言实验教学中通过不断探索,逐步总结出了持续改进的实验教学模式。通过将传统实验课与翻转教学相结合,在实验课前以视频方式给出一些实用的示例激发学生的兴趣;在课中,选取学生代表作为实验辅导员,辅助实验教师完成个性化指导,让学生参与到教学活动中实现自我评价和相互评价,通过实验培养了学生多方面的能力,而不仅仅限于知识的掌握。

1 实验教学设计

对比传统教学,在翻转课堂中学生、老师和课堂的角色发生了转变。学生要在课前预先学习课程内容,在课堂上用掌握的知识完成老师布置的学习任务和练习。而老师更多的是引导学生运用知识去分析和解决问题,将所学内容吸收。根据大型机汇编语言的特点,本文以翻转教学的方式重新思考和设计整个实验过程。首先,以培养学生技能和素质,帮助他们学习和训练为目标,为学生构建一个贴近实际的操作环境。然后,设计以项目驱动的实验内容和实验教学过程。最后,收集学生在整个实验过程中的各方面信息和数据,对学生的能力和掌握的技能进行综合评价。

传统的实验教学通常在实验前给学生讲授或安排实验内容,但是编程类实验往往需要在动手过程中才能深入掌握所学内容。单一的讲解和文字信息让学生不容易上手,而视频的一步步演示、操作和讲解更容易让学生遵循实验指导步骤开展自学。改进传统的实验教学,采用翻转的教学方式事先录制编程环境操作和编程实例的视频,能够充分激发学生的主观能动性。另外,部分学生可能在实验课前没有观看视频完成实验指导的操作,在实验课上,可以安排已经完成实验预学习的学生来参与老师的实验辅导工作,实现相互学习和相互评价,提高了实验课的效率和效果。

在课前,老师准备实验指导视频,学生自学部分实验内容;在实验过程中,学生的“工作”是完成设定的项目任务,而老师作为“教练”指导其完成工作。期间,学生完成技能训练,包括对项目各种问题的分析、程序设计、实现及调试,以达到发现问题、独立解决问题,开展探究式学习的目的。教师能够根据学生的自学情况开展个性化辅导,通过课堂互动帮助不同程度的学生掌握课程内容和锻炼编程技能。

1.1 翻转实验课堂

翻转课堂[7]的教学方式使课堂变成师生之间和学生之间相互交流、互动的场所。课堂上老师提出问题或布置练习,学生运用提前学习的知识完成学习任务,老师负责组织、指导、答疑解惑和给出评价。借鉴翻转课堂的思想,改变传统的实验教学方式,由教师引导学生完成实验项目,并通过答疑、学生之间的互评以及完成实验项目的情况把握学生的实验进度。

课程实验设计为一个完整的工程项目实施过程。通过确定工程问题与课程知识的映射关系,安排实验周期各个阶段的实验教学任务,将工程项目、课程知识与实验活动连接为一个整体。在实验课准备期间,老师根据知识点的难易程度录制实验视频。每个视频针对单一的知识点进行讲解和演示,长度设定为8~10min。视频从较简单的程序问题开始,一步步指导学生完成程序编码、调试和除错,让学生能逐步熟悉汇编程序的开发环境和掌握基本的编程思想。在实验课前学生通过观看实验视频指导,自学部分课程内容并完成简单的编程练习,如十进制运算、十进制与二进制转换及子程序调用等。实验课堂设定项目开发场景,给出项目需求,老师和学生经过讨论共同完成系统的分析和设计。在编程实现阶段,学生独立完成数据结构和算法设计以及程序实现;而在调试和除错阶段由老师指导或学生协作来解决程序问题。整个实验过程体现问题的求解过程,注重训练学生的思维方式。此外,实验课后还保留部分系统模块作为学生进一步提升工程能力的进阶练习,让学生根据自身情况有选择地进行学习和训练,同时将其纳入到学生能力和素质的考核和评价中。

1.2 面向工程认证的评价方法

通常实验以完成情况和功能实现作为评价标准,忽视了实验过程,使得很难量化考核学生所掌握的知识、技能和能力。因此,需要设计新的面向工程教育认证的评价模式,促进学生在实践中不断提升各方面能力,同时关注每个学生的特点及其发展潜力。实验的每一阶段对应一项考核指标,考核指标细化为课程的知识点,将课程知识的实际运用对应到技能训练,其结果作为评价依据。如在项目实现阶段,算法设计对应编程思维的训练、汇编指令的应用等技能考核指标;在纠错阶段,调试程序对应发现问题、解决问题能力的考核指标。每项指标反映出学生当前的学习状态,帮助学生了解自身情况,发现问题和促进自我改进。

面向工程教育认证的实验评价注重学生本人在评价中的作用,关注学生的能力培养过程,强调个性化学习。大部分学生在基本技能上需要老师指导和花费更多的时间练习编程;而部分学生能较快完成实验任务,可以协助老师和帮助其他同学。参与实验辅导和管理的学生可以在沟通交流、积极性等考核上获取评分。能力突出的学生需要更多的实验任务和额外的学习资料来匹配其学习进度。实验中给出部分创作式学习题目,如设定几个较困难的项目功能模块,这些模块要用到部分没有讲授的指令,学生通过自学来完成练习。老师根据自学情况和实验结果对学生的创新能力给出评价。实验结束后利用实验教学工具搜集、加工和处理在实验过程中学生的学习和评价信息,一方面供学生参考以了解自身的学习状况,另一方面供教师对学生进行持续的观察进而开展差异化教学。

2 教学实践

大型机汇编语言的编程方式与常见的Windows和Linux系统有较大的不同,编写和调试更加困难和繁琐。为了帮助学生掌握并熟练运用各类汇编指令,需改变原有的实验模式[8-10],减少老师讲授和指导,强调学生参与问题分析和系统设计。通过实验视频学生在课前熟悉编程环境;在实验课上老师组织学生讨论实验项目并拟定多个解决方案,让学生做出选择并说明原因。实验过程按照循序渐进的方式引入课程内容,做到层层递进,逐步深入和完善实验项目。实验课后,将实验过程特别是自学能力、互动交流、问题求解能力、编程技能等方面进行量化,纳入到实验考核中。

在实施的过程中,主要的问题是根据学生的不同层次,编制具有不同难度级别的实验项目,这也进一步增加了教师的实验教学工作量。实验教学的推进更需要实现个性化的教学,具有一定的挑战性。需在多次的实验教学中,不断积累丰富了各种难度的实验案例。本文设定实验级别,结合学校开展的综合课程设计教学,让学生参与实验内容的开发,能减少教师的工作量,同时培养学生的协作和创新能力[11]。对于在实验过程中的个性化教学,可以通过指定和学生自荐的方式选定实验辅导员,让学生参与实验教学活动,使得在选课人数较多的实验中充分发挥学生的主观能动性,使开展个性化教学具有可行性。

2.1 实验视频开发

大型机汇编语言的程序入口点和程序出口点代码,在每个实验中都是重复的,因此,在实验课前制作编程示例视频,对每一个指令在编程环境中进行讲解,同时结合宏指令的教学内容,讲解对于重复代码的处理方式,让学生在实验课中不再需要花太多的时间理解这部分内容,而是直接进入编程模式和编程方法的训练,很好地实现了翻转教学的思想。

大型机汇编语言[2]除了与X86汇编语言[12-13]一样需要完成编辑、汇编、连接及调试4个步骤外,还需要编写JCL语言提交系统后才能查看实验结果。由于编程环境是字符模式而且编辑区域有比较严格的规定,因此常常由于程序格式问题(如没有在特定的位置增加续行标记)出现错误。如果出现错误,则需要从系统的任务队列返回到编辑状态重新检查程序源代码,这对于学生来说需要花费大量的时间来熟悉汇编环境。本文考虑到大型机汇编语言的特殊性,开发了实验视频让学生在实验课前能按照老师的演示步骤进行练习,掌握汇编编程流程。

实验视频突出简单性和易学性。首先讲解编程环境、实验步骤、编辑技巧(如用HI ASM设置代码颜色防止写错关键字)及编写中要注意的事项(如编辑环境中终止列的位置)等内容。然后给出汇编程序代码,并演示汇编、连接和调试步骤,让学生能看到一个完整的程序实现过程。之后,在原有程序中安排一两个错误,如JCL错误,告诉学生如何在消息队列里查看错误提示信息,如何分析错误原因并找到错误出现的位置,最后根据课程所学知识来解决遇到的各种程序问题。实验课上如果学生遇到类似的JCL错误或者程序错误,老师还要引导学生根据消息队列的提示信息进行分析,如果不确定是什么问题,要猜测错误原因,并对猜测结果进行验证,看是否能解决问题。通过不断地尝试,学生在思考、分析、修改及验证的过程中锻炼了解决问题的能力。

2.2 实验项目分解与实施

实验项目设定为编写一个天气预报系统。

1)首先抽取其核心子系统作为实验内容,其他扩展功能保留作为高阶练习。核心系统主要根据记录的每小时温度获取当天的最低和最高温度以及发生的时间,同时计算平均温度和中间温度,并显示这些信息。

2)项目分解采用自顶向下的方法,完成框架设计、模块划分及算法实现。项目划分为主模块、输入模块、排序模块、计算模块和显示模块。每个模块分别对应课程的相关知识:主模块用到模块化编程知识;输入模块需要应用数据定义指令;排序模块要用循环指令来实现;计算模块使用十进制运算指令;显示模块考察字符与数字之间的转换及输出编辑指令。通过对各种指令的使用和编程实现,巩固了课程内容,将理论知识和编程实践联系到一起。

实验项目的实施是一个探究性的学习过程。课前老师给出实验题目(天气预报系统),让学生思考如何分解系统、设计系统框架和算法。课堂上,老师一步步引导学生围绕需求和设计问题进行讨论和分析,制定出多个解决方案。经过研讨后学生按照自己的想法和思路选取实现方案。在实现过程中,学生遇到问题要做出各种猜测,主动去寻找问题的原因,在解决问题的时候,要对问题进行推理、分析,找出解决问题的方向。老师辅助学生将观察和实验收集的信息进行整理研究,最终将修正完善的系统方案转化为汇编程序实现。探究性学习着重培养学生科学的思维方式,让学生通过实验掌握科学探索的方法和技能。

3 结束语

本文依据工程教育认证的目标,以学生为中心,对大型机汇编语言实验教学进行改革和探索。在实验教学中,翻转实验课堂,改变以往教师指导学生完成实验的方式,强调学生的个性化学习和创作式学习。以项目驱动制定一整套实验实施方案,引导学生自主学习和技能训练,促进学生主动去发现并解决问题。实验考核明确学生要掌握的基本知识、能力和素质要求,并将其与课程知识、实验表现及项目完成情况等指标对应起来,通过老师评分和学生互评清晰地反映当前学生的学习状态、掌握的技能和综合素质,有助于持续改进学生的工程能力。

[1]朱大勇,曹忠,李树全.大型机汇编语言教学方法探讨[J].计算机教育,2015,248(20):80-82.

[2]黄晓涛,王芬.“大型主机汇编语言”生态课堂教学模式探索[J].计算机教育,2008,79(9):78-81.

[3]刁红军,杨季文.汇编语言实验教学与实践[J].计算机教育,2015,243(15):97-99.

[4]熊曙光.汇编语言实验教学的现状与改革措施[J].计算机教育,2007(5):119-120.

[5]李振宇.重视汇编语言教学中的实验环节[J].实验室科学,2006(6):21-23.

[6]郭文平,陈盈,赵小明.基于翻转课堂的网络工程实验教学设计[J].实验技术与管理,2015,32(5):35-38.

[7]赵兴龙.翻转课堂中知识内化过程及教学模式设计[J].现代远程教育研究,2014(2):55-61.

[8]熊小兵,刘丹.汇编语言程序设计课程改革的几个问题[J].计算机教育,2015(4):11-15.

[9]胡斌,李建锋.建构主义理论的汇编语言教学设计[J].当代教育论坛,2011(15):20-21.

[10]WANG Y,LIU H,HE X C,et al.Assembly language exquisite course reform methods for teaching problems[C]//Shanghai 2012 Conference on Creative Education.Shanghai:Scientific Research Research Publishing Inc,2012.

[11]木林.《汇编语言程序设计》实验教学的探讨[J].呼伦贝尔学院学报,2012,20(2):92-94.

[12]郑利平,周国祥,张冬艳,等.结合高级语言的汇编语言教学方法研究[J].合肥工业大学学报(社会科学版),2008,22(5):101-105.

[13]刘跃华.以实践教学来增强“汇编语言”的教学效果[J].计算机教育,2008,66(6):20-22.

猜你喜欢

汇编语言实验课编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
高等学校计算机专业课程教学改革实践——以汇编语言与接口技术课程为例
纺织机上诞生的编程
汇编语言与C语言的混合程序设计技术研究
提高《汇编语言程序设计》教学效率的思考与实践
“自由”的实验课
上实验课
创新策略在高中生物实验课中的应用