《编译原理》教学方法的研讨
案例教学法在《编译原理》课程中的研究

22 .2利用 L ( 文法 和 S R 1文法 . R0 ) L () 引入案 例 5 对 于 文法 G : :
图 1 测 分 析 表 M1 预
二义 文 法会 产 生 语 法 结 构 分 析 上 的不 确 定 性 . 进 而 会 导致 语 义 处理 上及 目标代 码 生 成 上 的不确 定性 .
因 为分 析表 不 含 多 重定 义 ,故 此 文 法是 L () L 1文 因而是应 当避 免 的。 两个解 决文 法二义 性 的方 法 , 有 一 法。 一定 不具 有二 义 性 , 是二 义文法 。L () 法是 判 种是 强 制将二义 文法 转换 成 等价 的非二 义文 法 .另一 不 L1 文 断文法无 二 义性 的充 分条 件 。进一 步 。 引导 学生 思 考 , 种是 不改 变文 法 . 但需 要设 簧 一个 消除 二义性 的规 则 , 在 出现二 义性 时 . 用此规 则 找出正确 的语法 树 。 利 如果文 法是 二义性 的 .在 此 文法 的预测 分 析表 中会 出
得 到文法 G’ 的预测 分析表 M1 如下 图 l , 所示 :
非终 结符
a S
T T’
输 入符 号
( S () 一 T
T’ £T’ .T’ —} — S
(1 法 一定 不是 二义文 法 ,L () 析 表是 在 L () 0文 SR1 分 R 0分 析 表 的基础 上 构造 的 . 而 .L () 因 S R 1文法 也一 定不 是二
24 0
福 建 电
编译原理课程教学改革探索与实践

编译原理课程教学改革探索与实践一、引言编译原理课程是计算机科学与技术专业的重要基础课程之一,它是计算机学科中非常重要的一门课程,它为学生理解和掌握计算机软件开发的基本原理和技术提供了理论基础和实际操作技能。
传统的编译原理课程教学方式存在一些问题,比如理论与实践脱节、内容过于抽象,学生学习兴趣不高等。
为了更好地提高编译原理课程的教学效果,不断提升学生的综合能力和实际应用能力,教育教学工作者和学者们对编译原理课程的教学进行了改革探索与实践,本文将对此进行探讨。
二、编译原理课程教学改革的必要性1. 适应社会发展需求随着信息技术的快速发展,编程能力已经成为许多行业求职的标准之一。
编译原理课程教学改革的必要性在于培养学生的编程能力和软件开发能力,使他们能够适应社会发展的需要,在实际工作中有更好的发展。
2. 提高学生学习兴趣传统的编译原理课程教学方式往往内容枯燥、理论抽象,难以激发学生的学习兴趣。
教学改革可以使课程内容更加贴近学生生活和实际应用,提高学生的学习主动性和参与度,激发学生学习兴趣。
3. 培养学生的创新意识和实践能力编译原理是计算机科学与技术专业中的一门重要课程,其教学改革可以促进学生的创新意识和实践能力的培养,提高他们的综合素质和实际应用能力。
1. 突出实践性传统的编译原理课程教学往往过分强调理论知识,忽视了实际应用和实践能力的培养。
教学改革的方向应是突出实践性,引导学生从实践中理解和掌握理论知识,培养学生的解决问题的能力和创新意识。
2. 加强教学内容的实用性在教学内容的设计中,应该更加注重实用性和应用性,使学生可以学到实用的软件开发技术和经验,培养学生解决实际问题的能力和技能。
3. 强化实验教学编译原理课程是一门理论与实践相结合的课程,实验教学是提高实践性的重要手段。
应该加强实验教学的设计和实施,提高学生的实际操作能力和实验设计能力。
1. 课程内容的设计在编译原理课程的教学改革中,我们首先对课程内容进行了设计和调整,将理论知识与实际应用相结合,突出实践性和应用性,使课程内容更加贴近学生的实际需求和实际情况。
编译原理中LR分析法的教学探讨

编译原理中LR分析法的教学探讨编译原理是高校计算机专业的一门非常重要的核心课程,但由于课程教学内容多,理论抽象,算法复杂,并且涉及到形式语言与自动机、离散数学、数据结构、操作系统等多门先修课程的知识,使得它的难度大大提高,同学普遍反应学习难度太大,虽花了不少时间,但学习效果并不理想。
在教学的过程中,如何根据不同层次的学生,适当更新编译原理教学内容和教学方法,帮助学生在有限的时间内更加轻松和深入的掌握复杂的编译知识,从而有效的提高课程教学质量是一个有待解决的研究课题。
在编译原理的教学内容中,语法分析是教学的重点,而LR分析法又是语法分析中较难掌握的一种分析方法。
本文就以LR分析法为例展开探讨,介绍我们在教学过程中使用的方法。
实践证明,采用这种教学方法,可以较大的简化LR 分析法的教学,在较短的时间内让学生对LR分析的全过程有一个直观而深刻的认识。
2LR分析法概述LR分析法是一种自下而上的语法分析方法。
对输入串进行LR分析的过程,实质上就是逐一将输入串中的符号移入符号栈,从中识别出句柄并在栈顶进行规约的过程。
要理解和掌握LR分析法,关键是要理解符号栈栈顶和句柄之间的关系,或者句柄在符号栈栈顶的形成过程。
如果句柄还未在栈顶形成,就应进行“移近”的动作,以期待在将来形成句柄;如果句柄已经在栈顶形成,就应进行“规约”的动作。
为了帮助学生直观的理解这个过程,我们引入了“项目”的概念。
一个项目就是在一个产生式的右端加上一个小圆点,这个小圆点将该产生式右端分成了左右两个部分。
我们将一个项目的含义理解为:项目表示符号栈对某个句柄的识别程度,小圆点左边的部分已经从输入串中识别出来,并出现在符号栈的栈顶;小圆点右边的部分还没有识别出来,期望从剩余的输入串中对其加以识别。
一个文法的产生式数量有限,相应的项目数也有限,如果我们根据每个项目所表示的意义和转换关系进行状态划分和转换,即可构造出一个有限的状态转换关系图,这个状态转换关系图正好可以反映在符号栈的某个状态下分析程序应采取的动作:移近、规约、成功或出错。
编译原理课程教学的几点思考

编译原理课程教学的几点思考针对编译原理课程在计算机本科教学中难讲、难学的特点,从理论教学、教学方法、实践能力培养等方面进行了探索,提出了相应的解决方法。
标签:编译原理;教学方法;实践能力编译原理课程是计算机科学与技术学科下各专业的核心专业课程,其教学目标是通过教学实践训练学生的抽象思维能力和动手能力,旨在使学生掌握程序设计语言的形式化描述和编译的基本理论、原理和技术,并对编译程序有较为具体的认识。
使学生能运用所学过的基本知识、着手开发系统程序,为今后的工作(理论研究和技术开发)打下基础。
但由于其内容具有较强的理论性和实践性,学生在学习过程中感到内容抽象、算法复杂、难于理解,因此“编译原理”被普遍看作是计算机本科教学中最难讲解、最难学习的课程。
针对这种情况,如何提高这门课程的教学效果,是一个值得探讨的问题。
笔者近年来一直从事“编译原理”课程的教学,对如何改进教学方法和提高教学效果做了一些研究和探索。
1 明确教学目标,增强学习兴趣对于编译原理这门课程,普通高校本科的教学目标是:通过编程语言实现技术的学习,提高学习编程语言及在程序开发中应用编程语言的能力,具体解释如下:提高学习、理解和使用编程语言的能力;提高程序排错的能力,即快速理解、定位和解决在程序开发与程序运行中遇到的问题的能力;提高编写高质量代码的能力。
另外,由于编译程序,由于编译程序作为系统软件在性能上具有严格的要求,这使得它所使用的算法经典、高效,而这些算法、思想和实现技术也可广泛地应用于一般软件的设计实现。
如正规式和有穷自动机在文本编辑器中的广泛应用,有穷自动机在字符串查找中的运用,必经节点算法在网络中的运用,由文法来定义网络协议等。
在教学中,可以鼓励学生尝试将编译程序中的各种算法和技术应用到各个应用领域,从而激发学生的创造性思维,培养学生的创新能力,为今后的学习打下坚实的基础。
2 运用多种教学方法,提高教学效果“编译原理”课程具有很多概念和定理,再加上大量复杂的算法,抽象程度很高,因此要想获得良好的教学效果,必须借助形象化教学手段,使抽象的理论具体化。
编译原理 教学改革

编译原理教学改革编译原理是计算机科学与技术专业中一门重要的课程,它主要研究如何将高级语言编写的程序转换成计算机可执行的机器语言。
编译原理教学改革是指在传统编译原理课程的基础上,通过引入新的教学方法和内容,提高学生的学习兴趣和能力,培养他们的创新思维和实践能力。
下面将从教材选用、教学方法、课程设计等方面,探讨编译原理教学改革的重要性和具体措施。
一、教材选用传统的编译原理教材通常以理论知识为主,内容较为抽象,难以引起学生的兴趣。
在教学改革中,可以选用一些案例丰富的教材,将编译原理与实际应用结合起来,让学生在学习中能够更好地理解和运用所学知识。
二、教学方法在传统的编译原理教学中,通常是以教师为中心,通过讲授理论知识和解析例题来进行教学。
在教学改革中,可以采用启发式教学法,引导学生主动思考和探索。
例如,可以通过提出问题、讨论和实践等方式,激发学生的学习兴趣和动力。
三、课程设计传统的编译原理课程设计主要以编译器的前端和后端为主要内容,缺乏与实际应用相关的案例和实践环节。
在教学改革中,可以增加一些实践项目,让学生通过实际操作来学习和实践所学知识。
例如,可以设计一个简单的编译器,让学生亲自动手实现,从而加深对编译原理的理解和应用。
四、学生评价学生的评价是教学改革的重要环节,通过对学生的评价可以了解他们对教学改革的认可程度和改进意见。
可以采用多种方式进行评价,如问卷调查、小组讨论和个人访谈等。
通过学生的反馈,及时调整和改进教学方法和内容,提高教学效果。
编译原理教学改革的目的是培养学生的创新思维和实践能力,使他们能够熟练掌握编译原理的基本理论和实际应用。
通过教材选用、教学方法、课程设计和学生评价等方面的改革,可以提高学生的学习兴趣和能力,使他们能够更好地应对编译原理相关的实际问题和挑战。
编译原理教学改革是一项重要而必要的工作。
通过引入新的教学方法和内容,可以提高学生的学习兴趣和能力,培养他们的创新思维和实践能力。
“编译原理”课程的教学探讨

“编译原理”课程的教学探讨"编译原理"课程的教学探讨计算机语言之所以能由单一的机器语言发展到现今的多种高级语言,就是因为有了编译技术,它是计算机科学与技术中发展最迅速、最成熟的一个分支。
"编译原理"是计算机专业中一门非常有用的核心课程,综合运用编译理论及多门前修课程如"数据结构"、"离散数学"、"操作系统"等课程的相关知识来解决高级语言在机器上编译的一门课程。
该课程的目的是在于系统地向学生讲述编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,使学生通过本课程的学习,既掌握编译理论和方法方面的基本知识,同时也获得设计、分析和移植编译程序方面的初步能力,进而提高学生设计多种软件的素质。
1当前教学中存在的问题由于这门课程理论性强,内容丰富抽象,具有严密的逻辑性,使用到其它课程的知识较多,因此成为计算机专业诸课程中既难教又难学的一门课程。
目前该课程在教学过程中主要存在以下问题:1)课程内容抽象难理解编译程序不同于一般的应用程序,是一个十分庞大和复杂的系统软件,它所包含的理论知识较多,抽象度也较高,要求教师在有限的课时内将课程内容讲解清楚,并使学生接受理解是有难度的。
2)基于面向过程语言的描述模型目前,这门课程中的算法和模型描述是用PASCAL语言或者C语言等面向过程语言。
虽然个别教材加入了少量关于面向对象语言编译技术的内容,那也是稍加点缀而已,用途较小。
然而,面向对象语言已经成了高校计算机教学的主流语言,社会上大量使用的也是面向对象语言,而我们的编译原理教学仍然沿袭旧的面向过程语言,这种现象严重脱离了计算机技术发展和社会实际需要。
3)课程实验设计不合理目前,大多数高校在"编译原理"课程的实验内容上基本上都是要求学生能上机实现一个小型模型语言的完整编译程序,或者是分四个单独的实验(词法一个实验,语法三个实验),它们的目的是让学生加深理解一些编译理论与算法,这对于一部分学生来说是不能完成的任务,也不能激发他们的兴趣(他们认为学习编译原理就是为了设计编译器),造成很大部分学生在动手之前就早早放弃了努力,也就不能达到预期的实验效果。
“编译原理”课程的教学研究
“编译原理”课程的教学研究摘要:“编译原理”课程是计算机科学及相关专业的一门重要专业基础课程,但由于其理论抽象、算法复杂,加上目前本科学生中普遍存在的各种思想误区,教学效果不甚理想。
本文针对这一现状,从如何提高学生学习兴趣,搞好课堂教学,加强实践环节等方面入手,提出了相应的对策。
关键词:编译原理;课堂教学;实践教学“编译原理”课程是计算机专业必修的一门重要的专业基础课程,也是计算机系统软件中非常重要的一个分支。
学习和掌握编译程序的基本构造原理和实现技术,将为计算机专业学生进一步学习、研究和工作奠定坚实的专业理论基础。
但该课程内容有一定深度和难度,涉及其他课程知识较多,学生在学习过程中感到内容抽象、算法复杂,因此,“编译原理”被普遍看作是计算机本科教学中既难教又难学的一门课程。
这主要是因为:(1)本课建立在多门前修课程基础上,并要为后续课程提供理论和实践基础。
这些理论的学习有一定难度,学生要在编译课程中融会贯通比较困难;(2)本课程涉及的算法多而复杂,学生想深刻理解算法的思想很困难;(3)学生普遍认为学习该课程仅是为了构造编译程序,很难认识到其在培养自己掌握科学方法和形成严谨思维方面的潜在价值,因此感觉课程枯燥,望而生畏。
针对以上情况,笔者借鉴国内外“编译原理”课程的教学经验,对如何改进教学方法和提高教学效果做了一些研究和探索,并取得了良好的效果。
1明确教学目标,提高学生学习兴趣“编译原理”课程专门介绍如何将高级语言翻译为低级语言的编译程序的工作原理和方法。
不同于一般的应用程序,编译程序是一个十分庞大和复杂的系统软件,它所包含的算法建立在高级语言或汇编语言基础上,综合运用编译理论及多门前修课程,如“数据结构”、“离散数学”、“计算机组成原理”等相关知识,解决高级语言在机器上运行的实际问题。
因此,这门课程也可以看作是“软件工程”学习的一个实例。
这门课程的内容丰富,各部分内容间具有严密的逻辑性,不但可以使学生真正了解计算机的工作过程,认识计算机信息处理的实质,还可以综合运用所学的软件设计技术分析解决问题,提高计算机软件素质。
“编译原理”教学实践探究
“编译原理”教学实践探究摘要:教学需要“教”与“学”双方的密切配合。
树立“学生为主体、教师为主导”的良好教学关系,是成功教学的关键。
本文根据“编译原理”课程的特点,提出应用启发式教学的思想,提高学生在学习中的主体地位,多方面增强学生的学习兴趣。
文章结合笔者17年的“编译原理”课程教学实践经验,总结了开展启发教学、提高教学质量的一些粗浅策略。
关键词:编译原理;文法;有穷自动机;下推自动机;启发教学;教学策略教书育人是教师的天职。
教学,顾名思义,包含“教”和“学”两个方面。
教师需要“教”给学生知识和方法;而学生是学习的主体。
我们要取得好的教学效果,首先要激发学生的学习兴趣。
良好的开端是成功的一半。
开课伊始就让学生产生学习热情、学习兴趣是非常重要的。
两千多年前,孔子曾说过:“知之者不如好之者,好之者不如乐之者。
”意思是懂得它的人,不如爱好它的人;爱好它的人,又不如以它为乐的人。
爱因斯坦也说过:“兴趣是最好的老师。
”学生感兴趣了,教学就成功了一大半。
1.“编译原理”课程概述“编译原理”课程是计算机科学专业的一门重要核心课程。
计算机语言之所以能由单一的机器语言发展到今天的数千种高级语言,是因为有了编译技术。
自从20世纪50年代早期第一个编译器出现以来,编译技术成为计算机科学中发展最迅速、最成熟的重要分支。
自1966年设立图灵奖以来,程序设计语言、编译理论与方法方面的得奖成果约占总数的1/3。
可见,程序语言及其编译的研究在计算机科学中始终处于非常重要的地位。
“编译”是将高级语言描述的程序转换成与之等价的低级语言表达的程序。
在编译系统的设计与实现中,用到计算学科的很多基本原理、技术和方法。
Alfred V Aho编写的编译教材作为编译课程方面的经典教材,被奉为“龙书”。
他在该书第一章的第一句话提到:“编写编译器的原理和技术具有十分普遍的意义,以至于在每个计算机科学家的研究生涯中,本书中的原理和技术都会反复用到。
计算机专业师范生编译原理教学分析
计算机专业师范生编译原理教学分析摘要:在当前计算机专业课程当中编译原理是一门非常重要的专业课程。
根据当前高等师范院校当中计算机专业都存在有学生们对编译原理课程不感兴趣或者是不能获得更多知识和学习效果的情况,通过多当前计算机专业当中学生们的特点考察,对当前教学材料、对象、目标、过程等进行分析,从而在这样的基础上来设计出符合当前计算机师范学生编译原理课程最为有效的教学方案。
关键词:计算机专业师范生;编译原理;教学方案引言:在当前社会经济不断发展的今天,计算机专业师范生编译原理教学课越来越受关注。
在这样的基础上,必须要根据当前社会的需要来进行教学观念上的转变,对当前传统的教学模式进行完善和改革,同时研究出全新的教学模式,从而让学生们可以在进行学习期间可以正确的认识到自身存在的问题,进而端正他们的学习态度,提升他们对于编译原理的学习积极性,让他们可以更加热衷于编译原理知识的学习。
同时也必须要让老师们在进行教学期间更加的用心,从而使得老师和学生们一同进步。
1.计算机专业师范生编译原理理论知识的教学改革1.1在当前传统的教学当中,老师他们都习惯了在教学当中运用到填鸭式的教学方法,且在进行教学的过程当中老师对知识进行系统性讲解,然后学生们在短时间里对大量的知识进行掌握。
但是在这一种教学模式当中一般都是以老师为主体,学生们在课堂当中往往都没有较高的听课能力,同时在这样一种教学模式当中大多都是以书本为主要,很少去对学生们主体意识进行考虑。
另外,编译原理知识本就枯燥乏味,从而使得学生们更加提不起学习的兴趣,并且老师在进行教学期间也没有太多的互动环节,老师往往都不能很好的去掌握每一个学生们学习的实际情况,这样根本不利于教学的开展。
还有就是,计算机专业的师范生在必要以后大多数都是在中小学当中担任信息技术教师,编译原理的相关知识在他们以后的工作当中也并不能得到很好的利用,从而使得他们对于课堂的学习也不会有太多的兴趣,同时学生们如果是遇到了问题,也不会去进行独立的思考和进行实践。
编译原理---讨论课实施方案
《编译原理》课程讨论课教学计划编译原理课程与编译技术探讨2014年8月一、整体思路以编译原理课程在计算机专业中的地位为出发点,对编译编译原理课程涉及到的内容和相关编译技术为研讨对象,调研分析国内外不同高校编译原理课程的授课和教学情况,通过课前布置、指导,让学生利用课外时间查阅相关教材及资料,进行分析、归纳、总结或提炼,以学生上台讲演和讨论为主要教学形式,深入研讨学习编译原理课程的意义及了解其相关技术,以具体问题的理论解析和提出解决问题的方法为讨论内容,引导学生积极思考、学会学习、主动学习,综合训练学生能力,提高学生综合运用本专业知识,分析、理解和解决本专业及相关行业的理论和实践问题的能力。
通过研讨,力争让学生真正弄清楚为什么要学习编译原理?如何学习编译原理?学了编译原理之后能做什么?达到明明白白、快快乐乐学习之目的。
二、目的与意义1. 通过基于团队的学生上台讲演和课程讨论这种体验式教学方式,加深同学们对编译原理课程内容和编译技术的理解,并在沟通能力、团队合作能力等方面得到锻炼;2. 初步训练学生查阅文献、阅读相关技术资料和调查研究能力;3. 了解国内外高水平大学是如何进行编译原理学习和教学的;4. 了解最新的编译原理和技术。
三、具体实施方案1.学生上台讲演、报告抽签确定每组的一个学生完成一个案例。
学生在课外查找、阅读和分析相关的知识内容,总结、整理并撰写报告,做成PPT。
由每个学生上台陈述自己的研究内容,陈述时间为10分钟,最后每人上交一份分析报告(WORD文档及PPT,电子版)。
2.课堂互动陈述完后,汇报的学生回答台下学生和评委老师提出的问题,并针对所汇报的问题进行讨论,讨论时间为5分钟,最后由老师点评(依据需要讨论的具体内容,总结存在的主要问题,在课堂上由老师引导下进行讨论)。
3.讨论课时间提前布置明确的讨论内容,给同学们留出足够的时间查阅资料,讨论安排在课程后期进行,所有同学必须参加,否则讨论成绩为零。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《编译原理》教学方法的研讨
摘要:《编译原理》课程是计算机科学与技术专业中的一门核心
业课程,课程内容形式抽象,关联学科知识比较多,而且各部分之
间的逻辑联系紧密,讲课与学习难度都较大,本文就课程的教学方
法总结了一些经验,希望对课程的教学发展有所帮助。
关键词:编译原理;教学方法;教学组织
中图分类号:g642.4 文献标志码:a 文章编号:1674-9324(2013)
15-0064-02
《编译原理》课程是计算机科学与技术专业中的一门重要的专业
课程。传统的教学方法主要突出编译原理课程中书本知识的传授,
对于编译技术的思想介绍不是很突出,从而使得学生认为本课程对
其今后的发展没有什么作用,而忽视了课程开设的目的。我们认为,
《编译原理》课程内容虽然多,但各部分间逻辑联系很强。课程大
致可分为三个部分:第一部分是程序设计语言基本概念、形式语言
与自动机理论和编译程序的构造原理,使学生了解编译程序在程序
设计语言系统中的重要地位;第二部分为形式语言与有穷自动机理
论,为编译程序提供了完善的理论基础;第三部分深入透析编译程
序的构造结构,突出编译程序各部分之间的逻辑关系,使学生了解
编译程序的总体构造过程和方法,能够掌握基本的构造原理与技
术。《编译原理》课程具有较强的理论性和实践性,本文将从教学
目标、教学组织以及典型教学方法三个方面来探讨如何有效实施课
程教学。
一、教学目标
以工科为主的计算机科学与技术专业中的绝大部分毕业生都不
会去设计编译器或者从事相关工作。但《编译原理》课程中蕴含的
知识内涵非常丰富,课程中体现出的形式化方法和抽象的逻辑思维
能力是计算机科学与技术专业学科所要求的重要的“计算机思维能
力”。能力的培养绝不是通过一两门课程的学习可以实现的,尤其
这种抽象思维能力的培养,需要长期不断地学习和积累来完成。本
门课程就是这个体系中的重要组成部分。就如何突出该课程的实践
性和必要性,让学生掌握和了解编译程序的基本理论和基本构造方
法,还要兼顾大多数学生的需求,成为制定《编译原理》课程教学
目标的主要内容。所以,我们对学生的要求是:
1.对课程整体应当有较为全面的了解和认识,熟悉编译程序的构
造过程和形式语言中的基本概念和基本理论。
2.理解编译程序构造的一些基本算法和基本技术。
3.能够使用有穷自动机的理论和算法,解决常见离散事件问题。
二、教学组织
教师的职责就是讲授知识,陈述的内容要便于学生理解与接受,
同时还要提高学生分析问题的能力,当然也不能忽视学生应用相应
方法的能力。在《编译原理》课程的教学组织中,应当从以下几个
方面组织和安排教学工作:
1.备课。《编译原理》课程的一个特点是逻辑性很强,所以该课
程在准备的时候,可能比其他课程需要花费更多的时间,需要将课
程的整体逻辑理顺,在一个完整的课程框架内合理安排各个分支逻
辑的内容,孰轻孰重,就一目了然了。所以该课程的前期准备阶段
非常重要,需要我们对课程的内容有比较深层的理解和认识,设计
一个实验系统,以增加实践的效果,提高课堂中的实践性讲解,做
到开课之前就对课程有一个清晰的逻辑思路。
2.讲课内容安排。《编译原理》课程内容覆盖广泛,涉及到很多
相关学科的知识,如高级语言、离散数学、数据结构等专业基础课
程,就目前教学的基本学时数来说,基本无法满足教材中所有内容
的讲授,教师可以根据学生的理解情况对关的内容适当取舍。对一
般性的知识可以跳过,比如高级语言的概念;对理论性很强的概念
可以不作要求;对已学过的知识可以略过,如符号表、存储管理等。
在有限的课时内充分安排教学内容,是《编译原理》课程中组织教
学的一个关键环节。对于有穷自动机的工作原理和实现以及与正则
式的关系,可以详细讨论,并可以作一定的衍生,特别是有穷自动
机的理论和应用,可以留给学生一些思维的空间。总之,课堂内容
的安排组织在一定程度上可以激发学生学习探索的积极性和创造
性。
3.习题课讨论课。《编译原理》课程理论性很强,有大量的基本
概念和算法,有些概念和算法在理解上有一定的难度,为了便于学
生理解相关的知识点,在教学组织中应当安排一定数量的习题课,
帮助学生加深对基本理论和常用算法的理解,力争达到灵活应用的
目的。比如在讲解文法和语言一章中,有许多形式化的概念:文法、
推导、语言及chomsky文法的分类等,对第一次接触到这样的概念
的学生来说,理解这些概念的实质及它们在课程中的作用和地位是
比较含糊不清的,往往会使一些学生失去对此课程的学习积极性。
4.实验实习安排。《编译原理》课程是一门理论性很强的课程,
主要表现在形式化语言的理论基础概念贯穿在完整的课程知识中,
尤其是语法制导的翻译和以形式化的属性文法为基础的翻译过程,
大大地增加了课程的难度,代码优化及优化中的数据流方程又为整
个课程添加理论难度,就是这样的一门理论型课程,却有着同其他
应用型课程一样重要的实践性,甚至其实践的意义更为重要。课程
的特点决定了课程中的实验实习的重要地位。笔者要求学生完成
tinyc语言的编译程序,使得学生通过实践更为深入地理解课程中
的理论知识与方法。
5.典型教学方法。《编译原理》课程的教学难度比较大,既要让
学生理解编译原理的基本理论和方法,还要学生能够掌握一些解决
问题的方法和思路。《编译原理》课程的教学方法很多,笔者在总
结自身教学活动中,觉得有以下一些方法和思路可供探讨:(1)图
示法。运用状态转换图形象直观,对一些抽象问题的解决有很好的
帮助。这也是对问题抽象分析的重要体现。有穷状态自动机在解决
一些离散状态问题中是一个十分重要的思维模型,如果能够将问题
的分析和抽象通过自动机的模型反映出来,那么问题的解决将变得
十分的简单和可靠。(2)枚举、归类法。列出集合中的部分元素,
寻找元素之间的内在联系,构造相应的规则,这是形式化方法和抽
象思维能力的具体体现。从元素的构成形态出发,归纳出其一般形
式,需要有丰富的想象力和创造能力,再加上对形式工具的使用,
能够构造出形式多样的表示方法。
在计算机专业如何有效开展《编译原理》课程教学与学习是一项
值得研究的问题,作为教师的我们需要与时俱进,适时考虑相应教
学方法和内容的改革。这里我们提出和总结了一些教学方法和手
段,在实际教学过程中取得了良好效果。但《编译原理》课程的教
学方法和内容改革仍然需要我们继续付出大量辛勤劳动,以便取得
好的教学效果。
参考文献:
[1]陈火旺,刘春林,谭庆平,赵克佳,刘越.程序设计语言编译
原理[m].第3版.北京:国防工业出版社,2000.
[2]吕映芝,张素琴,蒋维杜.编译原理m].北京:清华大学出版
社,1998.
[3]alfred v.aho.compilers:principles,techniques,and
tools(影印版)[m].北京:人民邮电出版社,2002.
[4]高仲仪,金茂忠.编译原理及编译程序构造[m].北京:北京航
空航天大学出版社,1996.
[5]陈意云.编译原理和技术[m].合肥:中国科学技术大学出版
社,1997.
[6]张幸儿.计算机编译原理[m].北京:科学出版社,2003.
[7]蒋宗礼,姜守旭.形式语言和有穷自动机理论[m].北京:清华
大学出版社,2003.