编译原理教学中软件工程论文

编译原理教学中软件工程论文

1编译原理课程的特点和教学中存在的问题

1.1编译原理课程的特点及学习编译原理的目的

编译原理课程逻辑性强,理论性强,内容抽象,课时少,学生学习编译原理容易造成知识之间断裂,很难做到融会贯通。学生普遍存在畏难情绪,教学效果不理想。一般应用型本科学习编译原理目的是:掌握编译理论和基本技术,同时具有设计、实现、分析和移植编译程序等方面的初步能力,为从事计算机软件开发工作及理论研究打下坚实基础。

1.2教学中存在的问题

一般应用型本科院校学生的兴趣是应用计算机去处理现实问题而不是理论知识的获取,但是传统的编译原理教学内容理论性强,并且学生认为学习编译理论即是要构造编译器,所以学生的学习兴趣不浓。同时,学习编译原理要涉及到离散数学、组成原理、操作系统和数据结构等多方面的知识,所以学生接受吸收编译原理的理论知识和技术比较难。

1.3实践环节薄弱

编译程序是大型复杂的软件系统,在教学中一般把编译原理逻辑划分成五个阶段进行讲授,如:词法分析、语法分析、语义分析与中间代码生成、中间代码优化和目标代码生成。但是这样做易导致学生不清楚编译各个部分是如何协调工作的,尤其对于语法制导翻译技术和语义规则,学生理解起来异常困难,把复杂的编译理论和技术通过编程实现,大部分学生上机时无从下手,没有思路。

2软件工程化的编译原理教学改革

把软件工程化的思想引入到编译理论教学中,将软件工程的知识由浅入深、阶梯状、循序渐进地贯穿在编译原理实践各个阶段项目的开发中。

2.1依据应用型本科的特点进行教材建设

近几年来,经过教学团队继续不懈的努力,《编译方法及应用》教材在充分吸收国内外最新计算机教学理念和教育体系的同时,面向一般工程类院校本科教学,在基础理论之上,更加注重编译原理应用性、基本知识和基本技能的培养,集思想性、科学性、启发性、先进性和适应性于一身。自编《编译原理实验指导书》规范学生实验报告的格式,对实践涉及到的关键算法和数据存储结构给予说明,从软件工程的角度,从实验的需求、可行性报告等方面,要求学生完善文档体系,引导帮助学生完成编译原理实验。自编《编译原理习题与解析》,对知识点、重点、难点和典型算法进行深度总结,选择或设计富有启发性的例题,并对这些例题给出透彻的分析与解答,使学生掌握问题的解决方法和思路,收到了举一反三的效果,学生编译原理期末考试成绩明显高于往年。

2.2优化编译方法课程体系和教学内容

编译原理的整个知识体系是数十年来无数学术精英在形式语义学、计算数学、计算机科学等相关领域不懈探索、积累的结果。整个编译程序是一个完整的系统算法,理论性强而抽象。鉴于此,面向软件工程化改造编译理论,阶梯状迭代工程实践项目,将现代应用软件工程模型特点与编译技术紧密结合,引导学生利用大型软件的分析设计方法及手段,不断充实编译方法课程的内容,从而使得本课程的教学内容不仅具有先进性,还具有实用性。通过对知识点的概要总结、实验指导、课堂锻炼、经典习题解答、课后研讨等方式,加强学生对编译抽象理论的理解,把软件工程化思想引入到编译方法教学实践中,加强学生对编译理论与实践的相互深化与促进。

2.3基于软件工程化的教学实践

以创新性和实践性为目标,开设综合性设计性必做实验项目,引导学生利用大型软件的分析设计方法及手段进行编译原理实践,构造一个完整的编译器。按照编译程序的逻辑功能结构,将一个完整的编译实践划分为:词法分析、语法语义分析、中间代码生成、代码优化和目标代码生成。将软件工程的知识由浅入深、阶梯状、循序渐进地贯穿在编译原理实践各个阶段项目开发中。把编译理论知识内容巧妙地隐含在每个任务之中,学生以任务驱动、成立开发项目小组的形式协作完成任务。编译实践每个阶段的需求是前一个阶段的拓展,因此每一个阶段的软件开发可以看成前一阶段开发的迭代,从而锻炼学生解决大型软件开发项目中用户需求不断变更的疑难问题的能力,以及最大程度地使用重用技术的能力。教师组织开发团队进行汇报,小组内部之间经常交流情况和信息,以减少误解,删除软件中的个人特征,提高软件的质量,从而提高学生项目规划、队伍组织、工作分配、成员交流和演讲汇报等多方面的能力,培养学生的团体合作精神、团队合作进行项目研发的能力,以及采用软件工程化方法开发大型软件的能力,为研究和学习软件生产线新技术奠定基础。以创新性和实践性为目标,开设选作实践项目,如:算符优先文法的FIRSTVT、LASTVT集合的求法,算符优先文法的判断;FIRST、FOLLOW集合的求法,LL(1)文法的判断;LR(0)文法的判断,SLR(1)文法的判断。通过开设选作实践项目,拓展学生的思维,更进一步提高了学生把基础理论、基本技术、基本方法转化为解决实际问题的能力,以及理论与实践相结合的能力。

2.4编译原理技术的工程应用

形式化方法是编译理论最重要的方法,由于形式化方法是建立在严格的语法和语义规则基础上的,因此注重向学生介绍编译原理技术的工程应用,如:形式化方法在TEX科技排版系统和方正排版系统上的应用,形式化方法在数字电路设计和验证、通信电路设计和验证、需求分析描述、系统正确性验证等方面应用,取得了显著的成绩。

2.5培养编译方法教学团队

有计划、有目的地培养中青年教师。助教在完成编译原理课程的辅导、作业批改、实验辅导、软件综合课程设计的安排和实施等的基础上,参与编译原理课程、离散数学、汇编语言程序设计课程的建设,并参与课程大纲的讨论及教学计划的制订,获得了多项教改成果。课程团队还鼓励青年教师把先进的科研方向带进本科生课堂,实现科研与教学的有机结合,不仅有利于提高授课内容的先进性,也有利于锻炼年青教师的创造性和责任感。通过教学实践、实验教学的训练以及定期组织教学研究讨论,青年教师的教学态度得到进一步端正、教学方法得到进一步丰富,教学水平也有了很大的提高。课程团队还让青年教师通过科研的实际锻炼提高自己的研究能力,扩展知识面。课程团队目前已建立起一支强有力的教学梯队,形成了以高素质教师为骨干力量的教师队伍。

3结语

总之,立足于应用型本科院校,软件工程化的编译原理教学改革与探索是一项长期系统的工程,需要从教材建设、优化课程体系和教学内容、软件工程化教学实践和教学团队建设等多方面,激发学生的学习兴趣,提高教学质量,从而加强学生对理论知识的理解与实践创新能力。

作者:刘香芹 许清 单位:沈阳航空航天大学计算机学院