刘 磊 郭德贵
“编译原理”课程是计算机专业必修的一门重要的专业基础课程,也是计算机系统软件中非常重要的一个分支,任何计算机语言的实现都离不开编译技术,因而,作为计算机专业的学生,学习和掌握编译程序的基本构造原理和实现技术,对今后进一步的学习、研究和工作奠定坚实的专业理论基础是十分必要的。
吉林大学计算机科学与技术学院软件教研室多年来一直从事计算机本科生“编译原理”课程的教学与科研工作,积累了丰富的教学、科研经验,并取得了多项与编译课程相关的教学、科研成果,“编译原理”课程先后被评为吉林大学精品课程、吉林省精品课程和“教育部-微软精品课程”。
一、注重理论教学
编译程序不同于一般的应用程序,是一个十分庞大和复杂的系统软件,它所包含的算法和思想比较特殊,理论性较强,抽象度也较高。学习编译程序的构造原理和实现技术,不仅可以掌握编译程序本身的实现技术,同时也能够提高对程序设计语言的理解,提高语言的设计能力,提高元级程序的设计能力,提高开发大型软件的能力,能够培养学生的抽象思维能力和形式化描述能力。吉林大学计算机学院软件教研室在“编译原理”课程的教学过程中,注重学生对原理的理解,使学生不仅要做到知其然,更要做到知其所以然。
(1)科学引导,启发学生积极思维
从知识体系的内部结构入手,抓住编译过程各个功能阶段的内在联系和规律,通过有目的地设计问题,有意义地提出问题,引导学生的积极思维。把编译原理中的理论难点、抽象概念通过问题引导呈现出来,学生通过回答问题,从不同的角度寻求解决问题的原则、途径和方法,从而引导学生独立分析问题和解决问题,加深对编译理论和技术的理解。
(2)从知识体系的内部结构入手,培养学生的自学能力
教师通过精心备课,掌握知识的内在联系,对编译过程的各个功能阶段进行归纳总结。讲授时,让学生掌握编译原理各个阶段的基本概念,基本法则以及它们之间的内在联系和规律,抓住知识体系的主线,掌握规律性的知识,授之以法,培养学生的自学能力。
(3)实施多媒体辅助教学形式
“编译原理”是一门理论性强的课程,为了使抽象问题形象化,便于学生对知识点的理解和运用,利用多媒体手段,把原理性的重点知识以动画、图形形式呈现给学生,把知识讲解化静为动,寓教于乐,培养和激发学生的学习兴趣。
(4)设计课程辅助教学软件
教研室设计和开发了编译原理CAI课件-PCMCAI、SNL编译实例等编译原理教学辅助软件,教师在上课时使用这些课件来演示部分关键算法和难点,提高了教学效果,学生在课下利用这些课件自动生成各个分析程序,进一步理解基本原理和实现算法。
二、开拓教学内容、扩展学生视野
在“编译原理”课程的讲授过程中,教学队伍一直坚持教学和科研相结合、理论和实践相结合、课内和课外相结合,融知识传授、能力培养、素质教育于一体,将最新教改和科研成果引入教学。
教研室先后承担了Algol60编译器、Fortran编译器、Algol60到Fortran的转换器等与编译原理相关的科研项目,目前教研室正在进行ATLAS编译器项目的设计与开发工作。在教学过程中将这些科研项目中的新思想、新方法、新技术融入到课堂讲授当中,不仅加深了学生对编译基本原理的掌握,而且促进了学生对传统内容与最新技术成果的理解。例如,在讲授语法分析时,传统的Early算法受当时硬件条件限制,它仅仅是一个理论上的语法分析方法;随着技术进步,结合ATLAS编译器项目的设计与实现,Early语法分析方法便成为一个实用、有效的语法分析方法。通过这些内容的讲述,将经典编译理论与现代编译技术有机地结合起来,激发了学生对编译新技术的学习兴趣。
三、重视实践能力培养
编译程序以程序作为操作对象,是一个元级处理程序,它所包含的算法和思想理论性较强,抽象度也较高,并且一个编译器是由多个完成不同功能、执行在不同阶段的子程序组成的,各个阶段具有不同的特点,采用比较经典的方法来完成各自不同的功能,即使学生理解了不同阶段的各个子程序的功能和特定方法,但如何衔接各个子程序,如何组成一个完整的编译器,对学生来讲,仍可能是一件比较困难的事情。基于此,我们开设了编译原理实践课程,培养学生的实践能力。
实践性教学的设计思想是使学生透彻地理解编译程序的原理和思想,系统全面地掌握编译技术,使学生通过课堂学习,理解编译原理的同时,注重学生实践能力的培养,进一步巩固对知识的理解,通过实际的锻炼,掌握编译技术,进而能够独立地进行编译器的设计。
通过多年来的教学实践以及近五年来关于编译原理实践课程的建设,我们取得了一些成效。开设的编译原理实践课程,以实际上机实习为主,教师指导为辅,学生在实践课程中,通过实际动手,把原理性的抽象理论知识具体化和形象化,消化了课堂上、书本中难于理解的概念和方法,全面系统地掌握了编译器的构造过程。同时,也激发了学生的学习兴趣,提高了学生进行更深入学习的主动性。通过一个学期的实习,大部分学生对编译器的整个过程有了较清晰的理解,灵活地掌握了编译程序的构造方法和技术,部分学生可以独立地设计和实现自定义的模型语言,达到了预计的效果。
四、精品课网站建设
针对目前学生人数增多,教学资源不足,学生质量参差不齐,教学质量和效率得不到保证的情况,我们充分利用Internet网络,建立和实施了网络课程体系,利用Internet网在信息制造、贮存和递送方面的优势,克服了资源不足的缺点,同时也为学生提供了完全个性化的学习环境,发挥网络教学优势。具体网址为http://softlab.jlu.edu.cn。
目前已经完成了编译网络课程体系的基本功能模块,构造和实现了一个网络课程资源系统,具体包括:
(1)“编译原理”网络课程内容教学体系
将“编译原理”的课程概况、课程内容、习题解答、教学录像、参考资料、实践课题、编译实例库以及CAI课件等内容上网,为校内外学生学习和实践编译原理与技术提供理论知识和范例。
(2)完成学生练习系统的构造
通过电子黑板,BBS为学生提供开放的学习时间和空间,促进教师与学生,学生与学生间的相互交流,激发学生学习的主动性,提高学生的实践能力,更深入地理解和掌握课程内容。
(3)设计实现辅助工具系统
提供电子笔记本,对学生学习情况进行记录,教师通过对记录的分析,反馈和改进课程网络系统,有利于今后的维护工作。
(4)构造网络管理系统
通过网络登陆验证,维护网络安全,以保证网络课程体系运行良好。
五、教师队伍建设
长期以来,教研室一直注重把精品课程建设与高水平教师队伍建设相结合。“编译原理”课程已形成一支教师职称结构、年龄结构、学历结构、学位结构合理,人员稳定,教学水平高的教学队伍。教学队伍成员具有良好的师德,学术造诣高,教学能力强,教学经验丰富,教学特色鲜明。
编译课程负责人刘磊教授1997年获宝钢优秀教师奖,2005年被评为吉林大学十佳优秀教师,并在学校的教学评估中,多次被评为优秀,受到学校的表彰奖励,先后主编出版了多部教材,在各级学术期刊和国际会议上发表学术论文60余篇。
六、教材建设
教研室一直注重编译教材建设,先后在科学出版社、高等教育出版社和机械工业出版社出版了编译原理方面的著作7部,例如:《Algol60编译方法》上下册(1983年,科学出版社)、《编译方法》(1984年,高等教育出版社)、《编译原理与实现》(1989年,高等教育出版社)、《编译程序构造原理和实现技术》(2000年,高等教育出版社)、《编译程序的设计与实现》(2004年,机械工业出版社)、《编译原理及实现技术》(2005年,机械工业出版社)等。
目前在编著的由国家“九五”规划出版的面向二十一世纪教材《编译程序构造原理和实现技术》基础上,教研室又新推出了《编译程序设计与实现》教材,作为“编译原理”实践课程教材,也是“编译原理”课程的配套教材。该教材以实践培养为重点,针对一个教学语言模型,详细地介绍了该模型语言编译器的设计和具体的实现方法。同时,为学生提供国内外先进的编译教材,供学生选读。
这些教材一直是高等院校计算机专业普遍使用的教材,也是计算机软件相关专业的重要参考书籍,至今许多著作经过了多次重印,在国内占有重要的地位。
七、总结
教研室始终坚持吸收最新研究成果和保持自己特色的原则,保证“编译原理”课程教材内容的先进性和实用性,注重教学方法和教学手段改革,至今,教研室已先后出版编译相关教材7部,承担并圆满完成了多项省部级重点教改项目,发表了多篇教改教研论文,研制了课程教辅软件,使吉林大学在“编译原理”课程、教材和教学梯队建设,以及课程的教学组织管理和学生系统软件分析能力的严格训练等方面居国内领先行列。