当前位置: 迅达文档网 > 范文大全 > 征文 >

软件工程专业中编译原理课程的教学探讨

| 来源:网友投稿

摘要:结合软件工程专业特点,给出一套切实可行的编译原理课程的教学和实验方案,旨在提高学生的学习兴趣,解决因编译原理课程理论性强,实践困难而产生的现实问题。

关键词:编译原理;软件工程;项目管理

编译原理是软件工程专业的一门重要专业课程,与其他计算机学科关系紧密,其相关技术在很多领域都有广泛的应用,如软件工程、逆向工程、软件再工程等。这门课主要内容是程序设计语言编译程序的构造原理,包括形式语言、有限自动机、自上而下和自下而上的语法分析、LR分析方法、属性文法和语法制导翻译、语义分析和中间代码产生、存储器的动态分配与管理、符号表的组织与管理、优化问题、代码生成等内容。在软件工程专业设置本课程的目的,在于系统地向学生介绍编译系统的结构、工作原理以及编译程序各组成部分的设计原理和实现技术,使学生通过本课程的学习之后,既掌握编译理论和方法的基本知识,也具有设计、实现、分析和移植编译程序等方面的初步能力,为从事计算机软件开发工作及理论研究工作打下坚实的基础[1]。

由于编译原理课程本身逻辑性强、理论性强、理论实现偏难,学生普遍存在畏难情绪,教学效果不理想。本文就编译原理课程教学中的问题,结合软件工程专业的特点,就教学方式展开深入的讨论。

1编译原理课程教学存在的主要问题

1.1学生前期课程学习不足

编译原理课程的先修课程包括程序设计语言、离散数学、汇编语言、数据结构、计算机组成原理等。其中某一门课程的基础没打好,就会影响编译原理课程的学习。

1.2课程本身理论性强

本课程涉及不少理论知识,如形式语言和自动机理论、语法制导的理论等,内容抽象,学生学习与理解有一定的难度,特别是语法制导定义(或翻译方案)的设计。由于课程的理论性太强,难以激发及调动学生学习的兴趣,甚至致使部分学生放弃本门课程的学习[2]。

1.3实践性环节薄弱

编译程序是大型复杂的软件系统,在教学中要把它拆开成各个部分,分阶段地讲解,以便减低学习难度,但这样做常常导致学生不清楚各部分是怎样在整个系统中协调工作的。因此,上机编程时,大部分学生没有思路,无从下手,一部分同学还产生依赖思想,并出现抄袭别人程序的现象。

1.4教学手段单一

传统教学手段主要是以课堂教授为主的“灌输式”教学,很少采用启发式、讨论式教学方法。编译原理理论性强,学生上课时感觉听懂了,但在课后作业和实验环节,学生的表现说明他们没有真正理解。

此外,由于课程本身具有一定的理论深度和难度,而且学生普遍认为学习该课程仅仅是为了构造编译程序,认识不到其在培养科学方法和严谨思维方面的重大潜在价值,学生缺乏学习的积极性[2]。

2具有软件工程专业特色的教学方式

欲改善上述局面,就应结合学生的专业特色,即在软件工程专业教学过程中,把工程化的思想纳入到本课程中来,增加学生对课程目的性的认识,提高学生的积极性。

2.1在思想上提高学生的学习兴趣

为了消除学生对编译原理课程的畏难心理,教师的第一堂课非常重要。在第一堂课的组织中,教师应以引导性为主,比如把“编译”和两门语言间的“笔译”相类比,“解释”和“口译”相类比,这样可以增强学生的理解的记忆。然后,需要强调课程在软件工程专业开设的重要性,避免部分学生对本课程认识不足,投入精力不够。在语言组织上,尽量把复杂的问题简单化,可以添加些有趣的实例,增加学生的兴趣。让学生在第一堂课就减少一些抵触情绪,建立学好编译原理的信心。

2.2教学上采用软件项目开发小组的方式

为了更好地和软件工程专业相融合,在本课程的教学中,建议采用软件项目开发小组的方式。首先对学生进行分组或学生自行组织队伍,一个小组以6~8人为宜,固定一个组长作为项目经理,项目经理的职责是与老师沟通,是小组的领导者、决策者。教学过程中,老师除了教学外,还要承担项目委托方(需方)的角色,管理时多数时间与小组的项目经理沟通。在理论学习过程中,教师对每个章节的内容学习以及课后作业提出要求,各个小组给出解决方案,小组之间竞争,选出最好结果作为中标的供方,以提高学生的学习兴趣。在实验教学过程中,教师负责提出需求,并给出解题思路;小组的项目经理负责给组内成员分配角色,主要包括系统分析员、系统设计员、程序员、质量保证工程师、测试人员等,针对类似算法,要求小组内人员轮流执行不同的职责,保证每个学生都能训练到;实验课结果的提交采用项目答辩的形式,由各个组长和老师组成评审团,进行评审。在课程设计阶段,在小组内不同基础的同学分配不同的职责,以减少困难度,具体操作与实验类似。这种学生组织形式,有利于提升学生之间的团队合作精神,并且能很好地提高学生学习兴趣,团队之间的竞争大大激发学生的学习动力。

2.3理论教学采用实例教学

实例教学的依据是学习的一般规律。对编译原理这种理论性强的课程来说,采用实例教学是一种非常有效的方法[3]。其实际操作方式为:首先,教师通读教材多遍,并做完每章后习题;其次,参考其他同类教材,在此基础上选择在时量和知识影射方面最佳的例子;最后,强调学生自主学习,上课时教师只是快速的“过一遍”相关定义,而不是照本宣科地讲。接下来,课堂上的大多数时间用来讲解实例(这里的实例主要是相关知识点的应用例题,比如分析某个给定文法的二义性),让学生听懂例子、理解例子,学生再实践。最后,教师对课堂内容进行小结,归纳出一般性规律(理论知识),并让学生与前面的定义对比,这有助于其巩固对理论的理解,另外,可以让学生去看前面的定义、定理,这样回过头读这些理论知识要轻松很多、容易很多[3]。实际授课时,建议相关定义采用幻灯片形式,加大知识点的容量;而实例的讲授建议采用板书形式,思路更清晰。

2.4实验课有层次化,主要针对算法

本课程包含很多算法,有LL(1)分析算法和各种LR(1)分析算法、DFA化简算法、计算开始符号集合和后继符号集合的算法、各种数据流方程的迭代求解算法。由于实验课时间不连贯,实现编译器大型软件,只能将其分成几部分进行,鉴于学生理解上有困难,因此,建议实验课主要针对课程中的算法进行。实验组织形式上沿袭软件开发小组的模式,针对不同的学生情况分配任务,比如对于LL(1)分析算法,可以让编程能力强的同学先做开发,其他同学做辅助工作(测试、管理等),并学习相关代码程序;在做类似的LR(1)分析算法时,就转换角色,让前面没有做开发工作的同学参照LL(1)做相应的开发工作。这样就能使每个同学都能深刻理解相关知识点。

2.5课程设计,采用软件项目开发流程

对于连续一周时间的课程设计,做一个编译器是非常好的选择。作为软件工程专业的学生,应该能够以一个项目小组的形式高效地开发一个较大的项目。所以,像编译原理课程中的这种小型编译器,可以作为一个项目来进行开发,不但使学生对编译原理课程有整体上的认识,还能训练学生熟悉软件项目开发流程,增强学生的实践动手能力。原则上,课程设计期间,老师的角色应该是需方,即“客户”,各个项目小组的组长相当于项目经理,组员可适当分配角色和职责,比如系统分析员、开发人员、测试人员等,有时还会出现一人多个职责的情况。采用严格的项目管理流程,老师只具体参与需求分析、项目验收阶段,就能很好的把握学生的情况。通常在课程设计的第一天,教师负责给所有学生讲解需要完成的内容,即提供用户需求,该需求一般是给定一种具体的语言,要求学生完成该语言的词法分析、语法分析、语法制导的翻译和目标代码生成,然后把以上各个部分组合成完整的编译程序。教师应提供用户需求说明书,并和各个小组的项目经理共同商定小组的需求规格说明书。然后每个小组的项目经理负责提供一个项目进度计划,并明确每个小组成员的职责。在具体实践期间,小组的项目经理应每天提交项目跟踪文档,如果小组需要更改进度计划,应由教师同意,并根据项目计划修改流程进行修改。最后课程设计结束时,教师作为需求方参与项目验收,对各个小组进行最终评审,给出小组成绩。验收后小组应总结经验教训,并给出项目总结报告

3考核形式

考核是对学生学习效果的检验,也是调动学生学习积极性的指挥棒,对教学目标的实现具有至关重要的作用[4]。

为了均衡理论和实验,建议平时实验成绩占总评成绩的30%左右,理论考试成绩占70%左右。平时实验成绩要分解到每个实验中去,每个实验成绩由教师面试给出,以学生对实验理论内容的理解和实现算法的思路为主,并要求其分析具体源代码,从而判断学生真正掌握知识的程度,避免抄袭。理论考试以分析实例为主,尽量覆盖各个知识点。关于课程设计,建议采用小组答辩的形式,并要求小组内部进行成员互评,老师就小组总成绩结合小组自评和每个人的工作量给出每个学生的成绩。

4结语

编译原理是一门理论性和实践性都很强的课程,在软件工程专业的教学体系中又有着非常重要的作用。所以,把软件工程专业特点融入到编译原理课程中,采用科学系统的教学和实验模式是激发学生学习兴趣,培养学生分析问题、解决问题的有效途径。

参考文献:

[1] 李杨,谢光强,张春梅. 对编译原理教学改革的思考[J]. 广东工业大学学报:社会科学版,2005(9):112-114.

[2] 张巍,滕少华. 浅谈编译原理课程教学[J]. 广东工业大学学报:社会科学版,2005(9):115-116.

[3] 郑光明,蒋赞芳. 实例教学在编译原理中的应用[J]. 电脑知识与技术,2006(3):227-228.

[4] 陈媛,刘洁. 信息管理与信息系统专业中“数据结构”课程的实验教学探讨[J]. 重庆工学院学报:自然科学版,2007,21 (5):161-163.

Teaching of the Compilation Principle Course in Software Engineering

LIU Jie, HUANG Xian-ying, WANG Ke-ke, CAO Qiong

(Department of Computer Science and Engineering, Chongqing University of Technology, Chongqing 400050, China)

Abstract: Combining the features of Software Engineering, this article presented a set of practical program about how to teach the compilation principle, for enhancing students’ interest in learning. At the same time, this article introduced the thought to solve practical problems caused by the compilation principle course is very strong theoretical and the experiments in the course are too hard to the students to comply.

Key words: compilation principle; software engineering; project management

(编辑:郭小明)

推荐访问:软件工程 编译 探讨 原理 课程

热门排行

学习贯彻《信访工作条例》经验征文11篇

学习贯彻《信访工作条例》经验征文11篇学习贯彻《信访工作条例》经验征文篇1信访工作是党的群众工作的重要组成部分,是送上门来的群众工作。5月1日起施行的《信访

基层财政所工作面临困惑和建议 乡镇财政体制改革存在问题

下面是小编为大家精心整理的基层财政所工作面临困惑和建议乡镇财政体制改革存在问题文章,供大家阅读参考。基层财政

巡察谈话情况报告例文 巡察县政府办党组情况报告

下面是小编为大家精心整理的巡察谈话情况报告例文巡察县政府办党组情况报告文章,供大家阅读参考。巡察谈话情况报告

从《开国大典》谈中国油画民族化

“油画民族化”是1956年9月全国油画座谈会上提出来的,在当时的社会中,它不只是一个口号和一个新名词

世界优秀心理电影在青少年心理健康教育中的发掘和应用

摘要:世界优秀心理电影因其有针对性的题材、富于启发性的内容、强大的艺术魅力,对解决青少年心理问题、促

党员队伍建设存在问题与对策 党员队伍教育管理存在的问题

下面是小编为大家精心整理的党员队伍建设存在问题与对策党员队伍教育管理存在的问题文章,供大家阅读参考。xx村党员

传承红色基因征文600字 弘扬红色文化传承红色基因作文2000字

下面是小编为大家精心整理的传承红色基因征文600字弘扬红色文化传承红色基因作文2000字文章,供大家阅读参考。亲爱的朋友,

向巡视组工作情况汇报 被巡察单位党组织工作汇报材料

下面是小编为大家精心整理的向巡视组工作情况汇报被巡察单位党组织工作汇报材料文章,供大家阅读参考。向巡视组工作情况

职工代表大会制度.docx 职代会制度和职工大会制度

下面是小编为大家精心整理的职工代表大会制度 docx职代会制度和职工大会制度文章,供大家阅读参考。一、职工代

(完整版)学校意识形态工作实施方案 2022年学校意识形态工作要点

下面是小编为大家精心整理的(完整版)学校意识形态工作实施方案2022年学校意识形态工作要点文章,供大家阅读参考。学