编译原理论文范文

2022-05-10

小编精心整理了《编译原理论文范文(精选3篇)》,仅供参考,希望能够帮助到大家。摘要:“编译原理”课程是高校培养计算机专业人才的核心课程,其理论抽象、算法复杂,且实践性强。文章从如何搞好课堂教学,加强实践教学等方面入手,明确教学大纲,运用教学互动、案例教学、理论联系实际等方法来丰富教学手段。实践证明其较好地改善了教学效果。

第一篇:编译原理论文范文

“编译原理”课程的教学探讨

摘要:“编译原理”是计算机专业中一门非常有用的核心课程,针对“编译原理”课程教学过程存在的问题,结合实际的教学情况,对“编译原理”课程的教学内容和方法进行了探讨,提出了解决思路和方法。

关键词:编译原理;教学内容;教学方法

Discussions on Teaching“Compiler Principles”

WU Qi-lin

(Computer and Information Engineering Institute, Chaohu University, Chaohu 238000, China)

Key words: compiler principles; teaching content; teaching method

计算机语言之所以能由单一的机器语言发展到现今的多种高级语言,就是因为有了编译技术,它是计算机科学与技术中发展最迅速、最成熟的一个分支。“编译原理”是计算机专业中一门非常有用的核心课程,综合运用编译理论及多门前修课程如“数据结构”、“离散数学”、“操作系统”等课程的相关知识来解决高级语言在机器上编译的一门课程。该课程的目的是在于系统地向学生讲述编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,使学生通过本课程的学习,既掌握编译理论和方法方面的基本知识,同时也获得设计、分析和移植编译程序方面的初步能力,进而提高学生设计多种软件的素质。

1当前教学中存在的问题

由于这门课程理论性强,内容丰富抽象,具有严密的逻辑性,使用到其它课程的知识较多,因此成为计算机专业诸课程中既难教又难学的一门课程。目前该课程在教学过程中主要存在以下问题:

1)课程内容抽象难理解

编译程序不同于一般的应用程序,是一个十分庞大和复杂的系统软件,它所包含的理论知识较多,抽象度也较高,要求教师在有限的课时内将课程内容讲解清楚,并使学生接受理解是有难度的。

2)基于面向过程语言的描述模型

目前,这门课程中的算法和模型描述是用PASCAL语言或者C语言等面向过程语言。虽然个别教材加入了少量关于面向对象语言编译技术的内容,那也是稍加点缀而已,用途较小。然而,面向对象语言已经成了高校计算机教学的主流语言,社会上大量使用的也是面向对象语言,而我们的编译原理教学仍然沿袭旧的面向过程语言,这种现象严重脱离了计算机技术发展和社会实际需要。

3)课程实验设计不合理

目前,大多数高校在“编译原理”课程的实验内容上基本上都是要求学生能上机实现一个小型模型语言的完整编译程序,或者是分四个单独的实验(词法一个实验,语法三个实验),它们的目的是让学生加深理解一些编译理论与算法,这对于一部分学生来说是不能完成的任务,也不能激发他们的兴趣(他们认为学习编译原理就是为了设计编译器),造成很大部分学生在动手之前就早早放弃了努力,也就不能达到预期的实验效果。

4)教学手段陈旧

目前,“编译原理”课程主要以理论教学为主,课时主要用于形式语言理论与各种语法分析算法、语义分析技术的讲授上,缺乏对实际编译器的分析。同时,在讲解的时候一般没有辅之以其它形象生动的教学手段,对学生是采用“灌输式”的教学模式,而没有采用“启发式”、“讨论式”等多种教学模式,因此学生觉得授课内容枯燥乏味,激不起他们学习的兴趣。

5)教学大纲统一

目前,每个高校计算机相关专业包括计算机科学与技术、软件工程、网络工程等,学生也存在不同的层次包括统招的“一本”、“二本”学生,以及“专升本”学生等。不同专业有不同的培养目标,不同的生源造成学生知识背景和自身素质也有差异。在这种情 况下,在“编译原理”课程教学过程中实行统一的教学大纲显然不合适。

6)学生学习兴趣不浓

目前,学生普遍认为学习编译原理就是为了设计编译器,而大部分学生今后从事编译器设计工作的可能性较小,因此觉得没必要学。另外,目前面向对象的程序设计语言已经成为了主流,认为课程主要讲授面向过程的程序设计语言的处理已经落伍,因此失去了学习兴趣。

形成以上这些问题的原因既有主观的也有客观的,这些问题在我校的编译原理教学过程中也都不同程度地存在。为此,对“编译原理”课程的教学内容和教学方法进行探讨是十分必要的、有意义的。

2需要解决的问题

1)课程内容的调整

“编译原理”课程内容丰富抽象,理论性和逻辑性很强,所以很多学生在学习时普遍感到枯燥、乏味,难理解,激不起学习兴趣。为此,需要对课程内容合理安排以便收到较好的教学效果。

a)抓住重点,分清主次

由于课程内容涉及较多,学生往往抓不住重点,分不清主次,结果导致劳而无功。为此,需要根据专业的不同,学生层次的不同,在不影响对编译系统理解的情况下,合理安排授课内容,切不可造成“统一重点的教学”、“统一层次的教学”、“统一大纲的教学”现象。

b)范例式编译器的剖析

为了帮助学生对编译思想和方法的理解,应在教学过程中增加一部分内容,即对一个范例式编译器进行剖析。该范例式编译器应采用教学中涉及到的典型编译思想与方法。学生在教师的指导下对实际编译器代码进行阅读,将使学生对抽象的编译理论与算法有更深刻的认识,从而达到较好的教学效果。

c)面向对象式语言的描述模型

当前,面向对象式语言已成为主流,而目前课程中的内容却是围绕面向过程式语言展开的。为此,需要在教学过程中增加一部分内容,即选择某个对象式语言来描述典型的编译算法。但就目前来看,以面向对象语言作为源语言来重新组织编译原理的教学内容并不合适。在教学过程中应向学生指明这一点,使之有个正确的认识。

2)实践环节的设计

“编译原理”也是一门实践性较强的课程,只有通过实践环节才能让学生加深对抽象理论的理解,培养其分析、设计软件的能力。为此,必须重视实践环节的教学,精心设计实验方案,合理组织实践训练(对于不同专业培养目标、不同类别学生素质差异,需设计不同的实验方案)。

a)设计合适的实验内容

目前,大多数高校在“编译原理”课程的实验内容上基本上都是要求学生能上机实现一个小型模型语言的完整编译程序,或者是分四个单独的实验(词法一个实验,语法三个实验)。这样的实验内容存在一个缺陷就是不能充分激发学生的学习兴趣,因为他们认为学习编译就是为设计编译器,而大部分学生以后从事这方面工作的可能性较小。为此,我们需要设计一个能运用编译理论和技术去解决实际问题的实验。例如,可以给定一个受限汉语的子集,引导学生用文法去描述它,然后把它应用到一个简单的自然语言查询的程序设计中去。

b)合理安排实验课时间

实验时间安排要具有灵活性,不要一周或两周一次实验,这样可能和授课的理论内容脱节。可以分别在每个实验的相关内容讲解完后安排这四个实验,并要求学生记录下每次实验的输入和输出形式,实现理论与实践的结合。

c)改进实验课教学方法

为了让实验能达到预期的效果,需要做以下工作:一是老师在实验前要将准备好的实验资料发放给学生,让学生利用业余时间分析、设计实验内容;二是老师指导学生一起讨论实验所涉及的原理、程序模块的功能和部分变量的用途;三是学生在理解的前提下,开始进行实验,老师随时进行监督指导。最后,在实验完成后,老师一定要检查学生的完成情况,并给予记录,学生则要记录下所有的实验结果。

3)教学方法的改进

“编译原理”课程抽象性和理论性较高,学生普遍感到内容难理解,更不能运用编译技术所涉及到的思想和方法去解决其他专业问题,学起来枯燥、无味。为此,需要灵活运用多种教学方法,以激发他们的学习兴趣和积极性,培养其分析、解决实际问题的能力。

a)多媒体辅助教学

“编译原理”课程涉及到形式语言与自动机理论,主要包括一些经典的语法、语义分析算法。这些理论和算法抽象复杂,不易理解。为此,需要借助多种辅助教学手段,如CAI课件、CAI教学系统和教学网站等。这样可以把抽象的理论形象化,把知识讲解化静为动,寓教于乐,培养和激发学生的学习兴趣。

b)师生互动式教学

教学是由“教”与“学”两方面构成的,师生互动才能“教”、“学”相长,提高教学效果。在课堂上,应采用“启发式”、“讨论式”、“提问式”等多种教学模式,以发散学生的思维,激发他们的思考能力;在课后,应通过教学网站发放调查问卷等形式及时获取学生对教学活动的意见与建议,学生也可以通过BBS系统进行交流,以便及时发现问题进而改进教学方法。还可以指定课后的时间组织小型的师生面对面交流,一方面是答疑,一方面也可以就编译领域的一些新问题、新动向进行研讨,进一步激发学生的学习积极性。

4)教材建设和CAI课件制作

目前为止,国内外已有不少关于“编译原理”的经典教材,因而我们暂时不打算重新编写授课教材。但从以上分析可知,目前的课程实验内容设计却各不相同,没有合适的实验教材,因此有必要根据我院特色来组织编写“编译原理”课程实验教材。同时,我们也将依据我院教学实际,重新合理组织教学内容,图文并茂,制作精良的CAI课件,以减少板书的时间,提高授课效率。

5)教学网站的建设

开发“编译原理”网络教学平台,构建良好的网络辅助教学环境,实现学习、答疑、作业和考试等各个教学环节的网络化,教师和学生可以很方便的利用该平台完成几乎所有教学活动,本课程教学网站主要将分四大模块:

a)基本信息

包括课程负责人、课程主讲人、教学队伍、自我评价、课程建设规划、课程教学录像等相关信息。

b)课程建设

课程概况:课程简介、课程大纲、教学日历、教材和参考文献。

教学资源:电子教材、电子课件(PPT)、电子课件、参考教案、例题源代码、习题答案、考试样卷及参考答案。

实验教学:实验教学大纲、实验内容、实验指导。

在线考试:为学生提供了模拟笔试、模拟机试和在线考试,实现了自动组卷和评分。

作业练习:提供了各章的练习题、单元测试题。

作业提交:主要提供了作业的发布与提交等功能。

c)BBS论坛

提供学生、老师相互之间的交流平台,以便及时发现问题进而改进教学方法和内容。

d)问卷调查

在课后,发放调查问卷及时获取学生对教学活动的意见与建议。

6)CAI教学系统的研制

CAI教学系统是辅助教学的一重要手段,通过它可以帮助学生加深对编译思想和方法的理解与运用,进而培养和激发他们的学习兴趣。我们将考虑按照图1所示的系统结构图来设计“编译原理”课程的CAI教学系统。

基本知识播放:提供每章的基本知识点的查询和一些基本知识点的程序实现等。

编译过程演示:这是CAI教学系统主要模块,提供了词法、语法、语义分析算法的动态演示,而且还要动态演示中间代码生成、中间代码优化和目标代码生成的执行过程。

自我测试:提供题库,让学生测试自己对所学知识的掌握情况。

系统维护:随着编译技术的发展,知识的不断更新,会出现一些新的概念和算法,因此系统也要随时增加新的知识点。另外,随着系统的运行,可能会发现一些不正确的地方,也需要及时修改。

图1 CAI教学系统主要模块

3结束语

“编译原理”是计算机专业中一门重要的课程,通过本课程的学习,可以使学生获得设计、分析和移植编译程序方面的初步能力。结合实际教学过程,本文分析了“编译原理”课程教学中所遇到的六个问题,探讨了需要解决的五个问题,以期望在今后的教学中能达到较好的效果。

参考文献:

[1]陈火旺,刘春林,谭庆平等.程序设计语言编译原理[M].北京:国防工业出版社,2009.

[2]刘磊,郭德贵.“编译原理”课程建设研究[J].计算机教育,2006(6):8-10.

[3]高艳玲.编译原理-C教学编译器设计[J].电脑知识与技术,2009(18):4932-4933.

作者:吴其林

第二篇:“编译原理”课程教学改革实践

摘要:“编译原理”课程是高校培养计算机专业人才的核心课程,其理论抽象、算法复杂,且实践性强。文章从如何搞好课堂教学,加强实践教学等方面入手,明确教学大纲,运用教学互动、案例教学、理论联系实际等方法来丰富教学手段。实践证明其较好地改善了教学效果。

关键词:编译原理;课堂教学;实践教学

作者简介:韩丽(1978-),女,河南长垣人,郑州轻工业学院计算机与通信工程学院,讲师;王治国(1977-),男,河南孟津人,郑州轻工业学院计算机与通信工程学院,讲师。(河南 郑州 450002)

基金项目:本文系2010年郑州轻工业学院青年教师教学改革与研究课题立项项目(项目总序号:54号)的研究成果。

“编译原理”是高等学校培养计算机专业人才的主干课程之一,是一门理论、实践、技术要求都很强的课程。理论与实践的紧密结合是“编译原理”课程教学过程中的主线,“编译原理”是从事计算机软件开发研究和工程技术人员必备的专业基础知识。[1]“编译原理”课程内容有一定深度和难度,与其他课程知识交叉应用的多,因此学生在学习该课程过程中感到内容抽象、算法复杂。同时“编译原理”还具有以下几个特点:(1)课程理论性强且直观性不强,教学过程中并不涉及编译器的具体实现,因此学生并没有直观感受,很多枯燥的理论概念降低了学生对学习这门课的兴趣,学生甚至认为学习“编译原理”无用,教学效果达不到预期目的;(2)“编译原理”实践环节薄弱,由于编译系统的实现涉及到其他相关课程,所以综合性、连贯性强,即使在分模块设计的时候也存在较大难度,不利于提高学生的动手能力,使学生感觉到“编译原理”课程枯燥,望而生畏。因此“编译原理”被普遍认为是一门计算机本科教学中既难教又难学的课程。针对以上情况,笔者以多年“编译原理”课程的教学经验,对如何改进教学方法和提高教学效果进行了一系列教改实践,并取得了优良的教学效果。

一、完善教学大纲,实施有效的教学

“编译原理”课程系统介绍了编译器的结构、工作原理及编译程序各组成部分的设计原理和应用技术。通过对“编译原理”的学习,让学生既掌握编译理论和编译方法的基本知识,同时具备设计开发、实现、分析和移植编译程序的初步能力,为从事计算机软件开发及理论研究打下夯实的基础。由于“编译原理”是计算机及相关专业的必修课程之一,所以凡是计算机及相关专业均会开设该课程。因此会出现教学主要内容相同,却有不同层次的教学对象。不同专业、不同层次的学生对“编译原理”的课程掌握要求是不相同的。我们在专业团队的指导下依据郑州轻工业学院的具体特点完善了相应的教学大纲。依据相应的教学大纲,针对不同层次的学生采用一一对应的教学模式。实施有效的教学达到了预期的教学效果。

二、丰富教学手段,提高学生学习积极性

“编译原理”的理论性、实践性、技术性强,内容丰富且抽象,“编译原理”具有严密的逻辑性,和其他课程联系较多。若要在有限的课时内达到预期的教学效果,需要优化教学内容,理论联系实际,采用合理的教学手段提高教学效果。[2]同时,在教学过程中,教师应针对不同层次学生对“编译原理”课程的要求不同,来确定相应的教学大纲和实验大纲,精挑教材,提供相应的教学辅助软件和工具,采取不同的教学手段。

首先让学生认知学习“编译原理”的重要性,将“编译原理”的整个框架系统式介绍。以人类自然语言为例,逐步引导。拿不同自然语言间的翻译和机器语言的翻译程序做对比,从而引导学生从自身学习母语、英语出发来理解编译程序的五大过程。在每个过程执行的同时都伴随有表格管理程序和出错处理程序,如图1所示。

1.教学互动,启发学生积极思维

教师在上课前都要对前次课堂的重要知识点做一个回顾,然后随机抽查学生的掌握情况,对于踊跃回答问题的学生进行鼓励。在每节课结束前提前布置预习任务,为了活跃课堂气氛还可以采用反客为主的方式教学,即让学生上讲台来阐述自己对问题的理解和看法。引导学生发现问题、思考问题和解决问题。调动学生在教学中的自主性、选择性,在研究中促进学生创新意识和能力的培养。例如,讲例题的时候,可以讲一部分,让学生做一部分,还可以请学生到台上讲;另外,在交流和讨论中,要善于引导,不要学生一下子答不出来教师就把答案说出来。所以教师的作用不应只是传授知识,更重要的是引导学生思维,鼓励学生提出问题和教会学生如何思考,使他们在学习上有一定的自由思维空间。课堂教学中做到了师生互动,教学效果自然也就提高了。

2.实施案例驱动,提高学习效率

将案例驱动教学方法引入“编译原理”教学过程中,同时联系实际将案例教学与计算机专业的优势更好地结合在一起。[3]“编译原理”中的重点、难点以理论复杂、理解抽象、记忆枯燥为特征。而案例驱动教学具有生动、形象的特点,恰好弥补其不足,可以充分调动学生学习的积极性。让学生在分析案例、得出结论的过程中提高创新能力。在教学过程中,案例的主要形式是例题,一般是具有代表性的例题或综合习题,案例教学对于枯燥的原理和定义具有积极的催化作用。例如在学习语言和文法、推导、句型、句子、短语、直接短语、句柄这些概念时,仅从字面上去理解对学生来说有一定的难度,在这里教师就可以引进形象化的教学模式——语法树。

例1:已知文法G[E]

E→E+T∣T

T→T*F∣F

F→(E)∣i

(1) 给出句子i+i*i的最左最右推导过程。

(2)给出句子i+i*i的短语、直接短语、句柄。

最左推导过程:

EE+TT+TF+Ti+Ti+T*Fi+F*Fi+i*Fi+i*i

最右推导过程:

EE+TE+T*FE+T*iE+F*iE+i*iT+i*iF+i*ii+i*i

仅从定义上去寻找短语、直接短语、句柄,对于初学者而言是很难理解的,这时我们引进语法树,如图2所示。

通过对语法树进行剪枝就很快找到短语为:i+i*i;i;i*i;i;i

直接短语:三个单独的i

句柄:最左边的i

例2:试求出正规表达式(a∣b)*(aa∣bb)(a∣b)*相应的DFA M'。

该正规式对应的状态转换图如图3所示,若直接使用NFA到DFA得转换算法,学生会感觉很枯燥,在这里我们直接用这个案例,并且借助一个工具——状态转换矩阵,来简化算法,使得这个算法很快且很生动的调动了学生学习的积极性,提高了教学效果。

3.理论联系实际,优化教学内容

编译程序作为系统软件在性能上有严格的要求,其算法经典、高效,在编译器的开发过程中所应用到的算法、思想和实现技术已经广泛应用于其他软件的设计与实现,对提高学生程序设计的能力和开发大型软件的能力有很大的帮助。所以在教学过程中遇到相关知识时应及时引导学生利用课余时间去了解编译过程的构造。同时还要了解编译程序的设计与思想在现代计算机相关技术中的应用。例如,词法分析程序中的串匹配技术已应用于正文编辑器、信息检索系统和模式识别等程序,上下文无关文法和语法制导技术已应用于诸如排版、绘图系统和语言编辑器,代码优化技术已应用于程序验证器等之中。在讲授知识的同时向学生介绍编译技术在人工智能、并行计算、自然语言处理等领域的具体应用,也为后续课程做好铺垫,打好理论基础。鼓励学生尝试将编译过程中的各种算法和技术应用到其他领域,激发学生的创造性,培养学生的创新意识。

三、加强实践教学,激发学生主体意识

“编译原理”是一门对实践要求比较高的课程。[4]为提高“编译原理”这门“难教”又“难学”课程的教学效果,需要事先做大量准备工作,形成一套行之有效的教学体系。因此笔者利用现有的教学资源,结合毕业设计,指导毕业生设计开发了一个编译系统的教学及实验平台。在“编译原理”实验大纲的指导下完成了《编译原理实验指导书》的编写。以自由结合团队的形式展开学习实践,让学生们各有分工、彼此协作,在一定的时间期限内完成从题目分析、查阅资料、模块划分、编译知识运用、代码编写、报告撰写等工作,让学生参与课题研究的整个过程,获得到大型程序设计与开发的经验。[5]例如,利用编译知识构造一个计算器,要求程序能够根据用户输入的复杂算术表达式自动计算出结果,同时能够进行简单的表达式正确与否的判断。题目涉及到了编译过程中词法、语法、语义等知识,还有“程序设计”、“数据结构”等前期专业课程的综合运用。这种协作研讨团队的工作方式让学生的动手能力得到了提高,这种形式还能更好地提高学生的学习兴趣和团队意识。

四、教改效果与分析

为保证实验数据的可比性和有效性,对计算机06级和07级相同专业的考试成绩进行比较。考试方式笔试,试题题库抽取,结果显示,优秀率从11.11%提高到59.32%,不及格率从18.52%下降到1.69%,见表2,这说明对“编译原理”的教学改革卓有成效。

五、结束语

本文就如何改进“编译原理”课程的教学手段,提高教学效果做了一些实践和探索,从如何提高学生学习的积极性入手,对当下在理论教学和实践教学中存在的问题进行了分析与讨论。实践证明这些方法能很好地提高学生对“编译原理”课程学习的兴趣,较好地提高教学质量。总之,每一位教师对教学效果的完善、教学质量的提高都有责无旁贷的义务。建立一套便于理论联系实际的教学内容和课程体系;理清本专业课程之间的有机衔接,整合本课程与其他相关课程的知识;[6]以各章节重点为主线,捋顺每堂课之间的联系;精心设计实验环节,充分调动学生的学习积极性,提高学生的动手能力,培养学生思考和分析解决问题的能力;加强对实践结果的评定;增加编译系统课程设计,使学生亲自动手开发一个大型系统软件;针对“编译原理”教学内容开发一个“编译原理”课程教学及实验的平台;在传授知识的同时,加强学生综合素质的培养,激发学生的学习兴趣和创造精神。“教”与“学”始终是一个不可分割的组合。在当今计算机技术高速发展的今天,如何形成一个对“编译原理”行之有效的教学方法,需在实践中不断丰富、提高。

参考文献:

[1]胡伦骏.编译原理[M].北京:电子工业出版社,2005:6.

[2]张素琴.斯坦福大学计算机科学系的编译原理课程分析[J].计算机教育,2004,(1):79.

[3]黄贤英,刘贞,刘全利.“编译原理”课程的地位及教改思路[J].重庆科技学院学报(社会科学版),2005,(3):103-105.

[4]李冬梅,施海虎. 编译原理[M].北京:人民邮电出版社,2006:56.

[5]刘兵,姜淑娟.“编译原理”研究性教学的探索与实践[J].计算机教育,2007,(21):28-30.

[6]何炎祥,伍香春.现代教学理论指导下的编译原理教学综合改革[J].计算机教育,2005,(3):10-13.

(责任编辑:孙晴)

作者:韩丽 王治国

第三篇:“编译原理”课程的教学研究

摘要:“编译原理”课程是计算机科学及相关专业的一门重要专业基础课程,但由于其理论抽象、算法复杂,加上目前本科学生中普遍存在的各种思想误区,教学效果不甚理想。本文针对这一现状,从如何提高学生学习兴趣,搞好课堂教学,加强实践环节等方面入手,提出了相应的对策。

关键词:编译原理;课堂教学;实践教学

“编译原理”课程是计算机专业必修的一门重要的专业基础课程,也是计算机系统软件中非常重要的一个分支。学习和掌握编译程序的基本构造原理和实现技术,将为计算机专业学生进一步学习、研究和工作奠定坚实的专业理论基础。但该课程内容有一定深度和难度,涉及其他课程知识较多,学生在学习过程中感到内容抽象、算法复杂,因此,“编译原理”被普遍看作是计算机本科教学中既难教又难学的一门课程。这主要是因为:(1)本课建立在多门前修课程基础上,并要为后续课程提供理论和实践基础。这些理论的学习有一定难度,学生要在编译课程中融会贯通比较困难;(2)本课程涉及的算法多而复杂,学生想深刻理解算法的思想很困难;(3)学生普遍认为学习该课程仅是为了构造编译程序,很难认识到其在培养自己掌握科学方法和形成严谨思维方面的潜在价值,因此感觉课程枯燥,望而生畏。

针对以上情况,笔者借鉴国内外“编译原理”课程的教学经验,对如何改进教学方法和提高教学效果做了一些研究和探索,并取得了良好的效果。

1明确教学目标,提高学生学习兴趣

“编译原理”课程专门介绍如何将高级语言翻译为低级语言的编译程序的工作原理和方法。不同于一般的应用程序,编译程序是一个十分庞大和复杂的系统软件,它所包含的算法建立在高级语言或汇编语言基础上,综合运用编译理论及多门前修课程,如“数据结构”、“离散数学”、“计算机组成原理”等相关知识,解决高级语言在机器上运行的实际问题。因此,这门课程也可以看作是“软件工程”学习的一个实例。这门课程的内容丰富,各部分内容间具有严密的逻辑性,不但可以使学生真正了解计算机的工作过程,认识计算机信息处理的实质,还可以综合运用所学的软件设计技术分析解决问题,提高计算机软件素质。

作为系统软件,编译程序在性能上有严格的要求,这使得它的算法都很经典、高效,而这些算法、思想和实现技术也可广泛应用于一般软件的设计实现,对提高学生元级程序的设计能力和开发大型软件的能力是十分有益的。如正规式在XML查询技术中的广泛应用、有穷自动机在字符串查找中的运用、必经节点算法在网络中的运用、由文法来定义网络协议等。教师可以鼓励学生尝试将编译程序中的各种算法和技术应用到各个领域,激发学生的创造性思维,培养学生的创新能力。

2注重理论教学,开拓学生学习视野

“编译原理”的理论性强,内容丰富且抽象,具有严密的逻辑性,应用其他课程知识比较多。要在有限的课时内很好地完成本课程的教学,除了要注重教学的方式方法外,还要优化教学内容,将理论性与实践性相结合、时代性与实用性相结合、科学性与通俗性相结合。

2.1把握联系,启发学生积极思维

“编译原理”是一门综合性很强的课程,它的理论教学首先要考虑、分析各门课程的内在联系,增强课程的总体效能,达到事半功倍的效果。

“编译原理”与前修课程间的联系如图1所示。作为“编译原理”课程的前修课,如程序设计语言、形式语言与自动机、算法设计与分析等,既是编译技术理论的基础,也是编译技术的分析对象和实现手段。教师可以从知识体系的内部结构入手,将先修课程的内容贯穿始终,并不断强化和深入,以加强课程的系统性,培养学生的全局观。同时还要把握编译过程各个功能阶段的内在联系和规律,有目的地设计问题,有意义地提出问题,通过问题把编译原理中的理论难点、抽象概念引导出来,学生通过回答问题,从不同的角度寻求解决问题的原则、途径和方法,加深对编译理论和技术的理解。

2.2实例演示,形象化抽象理论

“编译原理”的概念和定理很多,再加上大量复杂的算法,抽象程度很高,要获得良好的教学效果,必须借助形象化教学手段,使抽象的理论具体化。

一方面,形象化教学可以通过实例类比来实现。例如,把编译原理与某种高级语言(如C语言),甚至可以是自然语言(如英语)联系起来,用课堂上学到的理论知识对该语言的语法和词法结构加以分析。这样不仅可以使学生深入了解高级语言的工作原理,做到知其然更知其所以然,更能使学生切实体会到编译原理的实用价值。如编译原理中词法分析的学习就可以以C语言中的实数为例,画出能够识别实数的状态识别图,并用程序实现。通过这个简单实例,学生很快就能了解词法分析在整个编译过程中的作用。

另一方面,教师可以借助多媒体辅助教学,把原理性的重点知识以动画、图形形式呈现给学生,化静为动,寓教于乐。为此我们编制了一些多媒体课件,用Flash技术生动形象地演示抽象概念和算法,同时向学生推荐网上优秀的“编译原理”课程教学网站、电子书、算法等资源,拓宽学生视野,培养和激发学生的学习兴趣。

2.3与时俱进,优化教学内容

编译技术是计算机语言发展的支柱,也是计算机科学中发展最迅速、最成熟的一个分支。目前国内“编译原理”课程所选用的教材大多偏重于介绍程序设计语言编译程序构造的一般原理和基本实现方法、技术,编译系统大而复杂,编译原理多而深奥。很多学生学习时会受教材的局限和影响,往往花费很大力气去掌握复杂而深奥的理论知识,而不是实际动手去构造具体的小型编译器,使理论与实践完全脱节。因此,教学要坚持理论和实践相结合,课内和课外相结合,融知识传授、能力培养、素质教育于一体。例如,主要算法、例题和习题可以以学生最熟悉的C语言为背景,将编译程序模型的实现过程贯穿于各个章节,让学生阅读理解和扩充编译程序,加深对所学内容的理解。

此外,教师还要坚持教学和科研相结合,将最新教改和科研成果引入教学,将经典编译理论与现代编译技术有机地结合起来,激发学生对编译新技术的学习兴趣。例如,程序设计语言已经从结构设计语言(如C语言)发展到面向对象程序设计语言(C++、C#),讲授一些经典的编译理论应用在新一代高级程序设计语言中的实例,会激发学生更大的学习热情。同时,向学生介绍编译技术在人工智能、并行计算、自然语言处理等领域的具体应用,也会为后续课程做好铺垫,奠定坚实的理论基础。

3加强实践教学,激发学生主体意识

“编译原理”是一门对实践要求较高的课程。编译程序以程序为操作对象,是由多个完成不同功能、执行在不同阶段的子程序组成的复杂系统,各个阶段具有不同的特点。即使学生理解了不同阶段各个子程序的功能和特定方法,但如何衔接各个子程序,组成一个完整的编译器,对学生来讲仍可能是一件困难的事情。

基于此,本课程的实践教学设计要充分考虑编译理论与实际应用的结合,突出阶段性和实用性。如将编译器的实验过程分为4个阶段,每个实验阶段安排在对应阶段的理论课结束时开始,实验以小组为单位进行,每阶段都有文档提交和审查评分,最后将不同阶段的各个子程序衔接起来,完成整个编译器的分析设计,实践课的成绩以40%计入总评成绩。这样,开发过程可以引入软件工程的理论,注入结构化程序设计思想,将整个系统模块化,合理组织不同能力层次的学生分组开发各个功能模块,鼓励所有学生共同参与,相互探讨,协作完成,共同提高。同时,要特别加强实验中的督促环节,各阶段的设计实现要严格控制实现进度和质量,培养学生良好严谨的软件开发风格。

4结束语

本文就如何改进“编译原理”课程的教学方法,提高教学效果做了一些研究和探索,从培养学生兴趣入手,对理论教学和实践教学中存在的问题和相应的对策进行了讨论。实践证明,这些方法能更好地提高学生对“编译原理”课程学习的兴趣,提高教学质量。

参考文献:

[1] 张素琴. 斯坦福大学计算机科学系的编译原理课程分析[J]. 计算机教育,2004(1):79.

[2] 黄贤英,刘贞,刘全利.“编译原理”课程的地位及教改思路[J]. 重庆科技学院学报:社会科学版,2005(3):103-105.

[3] 何炎祥,伍春香. 现代教学理论指导下的“编译原理”教学综合改革[J]. 计算机教育,2005(3):10-13.

[4] 刘磊,金英,王胜军,等. 编译原理多媒体辅助教学软件的设计与实现[J]. 吉林大学学报:信息科学版,2002(6):54-58.

[5] 张昱,陈意云,郑启龙. 编译原理课程的教学方法和教材建设[J]. 中国大学教学,2005(7):61-62.

[6] 李冬梅,施海虎. 编译原理[M]. 北京:人民邮电出版社,2006.

[7] 刘磊,郭德贵.“编译原理”课程建设研究[J]. 计算机教育,2006(6):8-10.

[8] 王一宾. 基于面向对象的编译原理实验的研究[J]. 安庆师范学院学报:自然科学版,2002(11):84-85.

Researches on the Instruction of Compiling Principles

HUO Huan, PENG Dun-lu, ZHANG Yan

(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)

Key words: compiling principle; course teaching; experiments organization

作者:霍 欢 彭敦陆 张 艳

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:制作专业论文范文下一篇:知识教学论文范文

热门文章

编译原理论文