编译原理课程改革浅析

(整期优先)网络出版时间:2018-07-17
/ 2

编译原理课程改革浅析

刘洋黄大荣赵玲刘君

重庆交通大学信息科学与工程学院重庆4300070

摘要:编译原理课程一直以来是计算机本科学生的专业必修课,实践教学环节是本科专业课程锻炼学生动手能力的主要途径,通过实践教学的培养可以加强学生对理论知识的理解,并极大的提高学生的动手能力。但是,就目前本科高校对编译原理课程安排的内容来看,大部分学校的实践内容较落后,甚至还有一部分高校没有安排编译原理的实践课。本文主要针对编译原理课程实践教学中存在的问题,提出具体建议和相关改进措施。

基金项目:重庆交通大学实验教学改革与研究基金项目“基于移动APP的实验评分系统开发”(编号:syj201629);重庆市教育科学“十二五”规划项目“基于MOOC的混合教育模式及其在《面向对象程序设计》课程中的教学实践研究”(编号:2015-GX-057);重庆市高等教育教学改革研究项目(173080);重庆市教育科学“十三五”规划课题(2017-GX-323)

编译原理课程作为计算机本科高校中学生的专业必修课,是一门不容忽视的重要课程,虽然目前几乎所有的高级程序语言编程工具都集成了编译器,但是,作为计算机专业的学生了解编译器的原理和工作过程有助于理解程序的整体架构和逻辑框架,可以更好的掌握高级程序设计语言的使用,能够更快的找出程序设计中的问题和不足。本人以这些年来从事编译原理课程的教学经验为基础,针对教学过程中实际存在的问题,主要从该课程实践教学的现状出发,提出一些实践教学方法的改进措施,以此来提高学生对该门课程的理解力和学习兴趣。

1编译原理课程安排的现状

1.1内容陈旧

讲授编译原理课程三年以来,学校只安排了理论课的学习,并没有安排实践课,而且理论课的内容仅仅是以Fortan、Pascal、Prolog(少部分提到了C语言)为例来介绍编译器的工作过程,时下流行的高级程序设计语言Java、C#、Python等教学大纲里面没有提及。而对于现在的本科生来说,理论课中涉及到的高级程序设计语言他们并未了解过,相反,他们系统学习过的语言反而并没有作为例子来进行实际的讲解。因此,学生觉得这门课程晦涩难懂,从教学过程中学生的反应来看,几乎一半的学生处于迷茫的状态。

1.2未安排实践教学

除了编译原理理论教学内容陈旧以外,很多高校没有安排编译原理的实践教学部分,这也是促使这门课程学生掌握不透彻的重要原因之一。理论来源于实践,运用于实践,实践课程是锻炼学生动手能力的重要途径,也是学生加深理解该门课程内容的主要方法和手段。因此,这门专业必修课是非常有必要增加实践教学部分。

1.3学生基础知识不牢

除了上面提到的两点原因之外,还有一个非常重要的原因就是很多学生的前期基础知识(需要掌握的课程内容)不牢固,编译原理课程的学习需要的先修课程有高级程序设计语言、汇编语言、数据结构、离散数学等,这些课程有一部分在大一开设,一部分在大二开设(一般编译原理在大三下学期开设),学生往往这些专业基础课没有掌握好或者已经遗忘了(比如汇编语言),因此,在这种情况下,学生再来学习编译原理难免困难。

2实践教学改革建议

2.1更新理论课教学内容

根据计算机科学发展的实际情况,更新编译原理理论课程内容,以学生实际学习过的高级程序设计语言为实际课程案例进行编译器原理的介绍,便于学生对知识点的理解和掌握,以前的经典程序设计语言可以适当的提及(比如Pascal)。同时,在讲解的过程中可以以一个实际的编译程序来进行编译过程的介绍。

2.2适当安排实践教学

在进行理论课程讲解的同时,安排相关的实践课程内容,锻炼学生的动手能力,加深对编译器相关知识点的理解。最好能让学生自己动手设计编译器,这样学生才能真正去理解高级程序设计语言编辑工具后台集成的编译器工作原理和过程,加深对高级程序语言本身逻辑结构的了解和框架的认识。

2.3课程时间的安排

把编译原理这门课程放到大三下学年学习相对而言有点晚,在学生系统学习过某一门高级程序设计语言、数据结构和汇编语言后,可以马上进入编译原理的学习,这样学生不至于遗忘太快(离散数学通常在大一学习)。有利于学生进行编译原理这门课程的学习和编译最后阶段目标代码生成的掌握(通常在介绍到目标代码的生成这个阶段,学生已经遗忘了汇编语言)。因此,有必须在教学大纲中对编译原理这门课程的学习所处的学年进行调整。

3合理选材

除了理论教学内容的更新和实践教学的适当安排,还有一个重要方面就是作为专业必修课教材的选取问题。一般来讲一本专业课教材三到五年需要一个更新,如果长期使用同一个版本的教材难免跟不上时代的步伐,因此,在教材的选取上也需要根据当今的科技现状选取合适的教材,不能一成不变。实践教材最好选择学生已学过的某种高级程序设计语言编写的案例进行介绍,从编译器最开始的词法分析器到语法分析器,直到最后的目标代码生成的每个阶段都有实例的案例。这样对学生理解编译器的每个阶段工作原理有很大的帮助。

本文提出的编译原理课程改革方法不仅能有效提高学生对编译器的相关理论知识点的理解,而且还有利于学生动手能力的培养,以及学生对高级程序设计语言逻辑框架的掌握,能帮助学生更透彻的掌握所学的知识点,同时,提高教师教学效果。

参考文献:

[1].陈晶,张鲲.编译原理课程中类比教学法的研究[J].软件,2017,38(7):55-57.

[2].黄海军,王友瑞,胡荣贵.《编译原理》课程实践教学研究与探索[J].计算机工程与科学,2016,38(s1):58-60.

[3].韩士元,蔺永政,周劲,等.基于MOOC的编译原理分阶段课程教学研究[J].计算机教育,2016,No.261(9):74-76.

[4].左新娥,吕志凌,黄卓冕.对编译原理课程教学中专业能力和素质培养的探讨[J].企业科技与发展,2016(7):168-170.

[5].刘汉强.计算机专业师范生编译原理教学和实验改革[J].教育教学论坛,2017(36):121-123.

[6].陈晶,张鲲.类比教学法在计算机专业主干课程中的应用研究——以《编译原理》为例[J].教育现代化,2017(43).