编译实验课程的教学研究与实践

合集下载

“编译原理”课程教学方法的研究与实践

“编译原理”课程教学方法的研究与实践

“编译原理”课程教学方法的研究与实践摘要:“编译原理”是高校计算机类专业的重要基础和骨干课程,本文分析了该课程的重要性及教学目的,讨论了课程中采用的多种教学方法,并就实践环节进行了设计。

实践证明,教学环节的设置与教学方法的选择适应学生的认知规律,有助于学生理解知识和锻炼能力。

关键词:编译原理;理论教学;教学方法;实践教学1研究背景“编译原理”是计算机及相关专业的一门重要专业课程,着重培养学生的程序设计和实现能力,在计算机科学中有很重要的地位,被列入国际ACM91教程。

编译程序构造的基本原理和技术蕴涵了计算机科学解决问题的思路和抽象解决问题的方法,其中的设计思想、算法、思维方式和技术都会对学生今后的发展产生比较大的影响,甚至还有“编译原理对计算机专业学生的重要性与高等数学对理科学生的重要性几乎可以相提并论”[1]的说法,可见其重要性。

编译原理与其他计算机学科课程关系紧密,如高级程序设计语言、数据结构、离散数学、软件工程等,是一门理论深度和实践要求并重的课程。

学习一门课程,首先应该明确学习目的,这样才能有针对性地学习,提高学习热情。

本课程系统地向学生介绍编译系统的结构、工作原理及编译程序各组成部分的设计原理和实现技术,学生学习后,既应掌握编译理论和方法的基本知识,也应具有设计、实现、分析和移植编译程序的初步能力,为从事计算机软件开发及理论研究打下坚实的基础。

为了实现本课程的教学目标,笔者采用了多种教学方法,并就实践环节进行了设计,以下就是笔者的教学实践总结和反思。

2理论课教学2.1启发式教学“启发式教学”是先进的教学模式之一,强调传授知识的同时重视学生能力的培养及非智力因素的发展。

它把学生真正置于主动者位置,充分调动学生的积极性,激发学生的学习兴趣。

由于本课程理论性较强,概念原理较多,所以充分发挥学生的积极性就显得尤为重要。

在授课过程中,教师注重引导学生自我发现问题。

例如在讲解句型分析内容时,提到自顶向下和自底向上分别体现推导和归约的本质,及每一种方法的特点和局限性。

编译原理课程教学论文

编译原理课程教学论文

编译原理课程教学研究【摘要】目前的编译原理课程的教学中存在以下问题:1、教学内容偏重于原理;2、实验内容的语言不合理;3、实践环节太薄弱。

针对此做出了如下的改变:1、区分不同层次的学生合理组织教学;2、灵活应用多种教学方法;3、加强学生动手能力。

【关键词】编译原理改革教学方法动手能力组织教学一、引言编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。

内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。

编译原理是计算机专业设置的一门重要的专业课程。

虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。

二、在教学过程中存在的问题在编译原理课程的教学实践中,我们发现需要解决下列问题:1. 教学内容比较偏重于原理。

编译原理中的核心理论是词法分析和语法分析这两部分,如果说不去做题的话是不可能学懂的。

那么按照这样的教学内容教课,就容易给学生造成误解,认为学编译原理关键就是会做题。

但是事实上是不对的,编译原理不同于一般我们所学的纯理论课,它的实践性也是很强的。

2. 实验内容所使用的语言不合理。

目前大多数教材中的实验内容使用pl/0语言的编译程序。

但是事实上因为pl/0语言是pascal的子集,而现在很多学生已经不再学习pascal语言了,所以大多数的程序是看不太明白的。

3. 实践环节太薄弱。

纵观整个编译原理的教学,事实上所偏重的都是理论教学,而真正的实践实在是少之又少,以致学生搞不太清楚研究编译原理到底有什么意义。

而且由于编译原理涉及的理论知识较多,形成了一种抽象层面上的数据变换,许多学生难以理解,曾一度被视为天书。

有些学生在专业课学习时还存在考研或实用的偏爱,投入到编译原理的学习时间相对来说就较少,给教学带来一定的影响。

三、对这些问题做出的一些改进方法针对以上的这些问题,我们有必要对编译原理这门课程做出一些改革。

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

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

“编译原理”课程的教学探讨"编译原理"课程的教学探讨计算机语言之所以能由单一的机器语言发展到现今的多种高级语言,就是因为有了编译技术,它是计算机科学与技术中发展最迅速、最成熟的一个分支。

"编译原理"是计算机专业中一门非常有用的核心课程,综合运用编译理论及多门前修课程如"数据结构"、"离散数学"、"操作系统"等课程的相关知识来解决高级语言在机器上编译的一门课程。

该课程的目的是在于系统地向学生讲述编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,使学生通过本课程的学习,既掌握编译理论和方法方面的基本知识,同时也获得设计、分析和移植编译程序方面的初步能力,进而提高学生设计多种软件的素质。

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

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

2)基于面向过程语言的描述模型目前,这门课程中的算法和模型描述是用PASCAL语言或者C语言等面向过程语言。

虽然个别教材加入了少量关于面向对象语言编译技术的内容,那也是稍加点缀而已,用途较小。

然而,面向对象语言已经成了高校计算机教学的主流语言,社会上大量使用的也是面向对象语言,而我们的编译原理教学仍然沿袭旧的面向过程语言,这种现象严重脱离了计算机技术发展和社会实际需要。

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

基于创新思维培养的编译原理实验教学改革

基于创新思维培养的编译原理实验教学改革

基于创新思维培养的编译原理实验教学改革编译原理实验教学是计算机专业非常重要的一门课程,为了培养学生的编译原理实验能力,采用创新思维培养的方式对实验教学进行改革,旨在提高学生的实际编程能力和创新能力,培养学生的综合素质和能力,使他们能够胜任未来的工作和研究。

一、实验教学的创新理念创新教育理念强调学生积极参与和主动探究,倡导学生开放的思维方式和多元化的解决问题方法。

基于这一理念,我们在编译原理实验教学中,采用了创新思维培养的方式进行改革。

我们注重培养学生的实践能力和创新意识,通过实验教学激发学生的学习兴趣,促进其动手能力和创新能力的培养。

二、实验教学的改革内容1. 课程设置的创新在课程设置上,我们注重将编译原理实验与当前的前沿技术结合起来,引入最新的理论和技术,让学生在实践中不断学习和探索。

我们通过不断更新实验内容和案例,引导学生了解更多的实际应用情况,让学生在实验中不断创新,提高其实际动手能力和思维能力。

我们对编译原理实验的项目进行了重新设计和调整,突出实用性和创新性,引导学生在实验中解决真实的问题,培养他们的创新意识和实践能力。

我们增加了一些具有挑战性的项目,鼓励学生自主设计和实施实验方案,培养他们的独立思考能力和解决问题的能力。

在教学方法上,我们注重培养学生的自主学习能力和团队协作能力。

我们采用项目驱动的教学方法,通过实践项目引导学生深入学习和研究,培养他们的问题分析和解决能力。

我们鼓励学生在实验过程中进行讨论和交流,培养他们的团队协作和沟通能力,促进其共同成长和进步。

三、创新思维培养的实施策略1. 提供多样化的学习资源为了培养学生的创新思维,我们提供了丰富的学习资源,让学生在实践中获得更多的知识和经验。

我们建立了一套完整的实验平台,让学生在实验中学习和探索,增加了实验设备和工具,让学生在实验中用到真实的工具和设备,增加了实验案例和资料,让学生在实验中获取更多的信息和灵感。

2. 鼓励学生开展创新项目为了激发学生的创新意识,我们鼓励学生开展创新项目,提供相关的指导和支持,让学生在实验中发挥自己的特长和兴趣,培养他们的创新能力和实际动手能力。

“编译原理”课程教学探索与实践

“编译原理”课程教学探索与实践
介 绍 了更 多 的 自动 生成 工 具 , L X、 A C外 还包 除 E YC 括 I a aO C 、 m 、 C S u n等介 绍 . 意云主编 的《 I 陈 编译
语言 、 有穷 自动机 及 语 法 制 导 翻 译 等 抽 象 内容 , 学
生在 学习过 程 中存在 一 定 困难 , 曾一 度被 学 生戏 称 为“ 书” 作 为授 课 教 师 , 何 让 这 门课 的教 学 效 天 . 如
学生学 习兴趣
基金项 目: 华东交通大学“ 编译原理” 精品课程 .
作者简 介 : 刘立月(90 , , 师, 17 一) 男 讲 研究方向 : 测控 、 入式 及网络工程 . 嵌
维普资讯
9 0








20 06在
严格把握课 堂教学 内容 ,深入 研究各 知识 点产
维普资讯
第 2 卷 3 20 年 l 06 2月








V 12 0.3
Ju a fE s C iaJ oogUnvri o r lo at hn i t iesy n a n t
D c .2 0 e . 06
文章 编号 : 0 ~02 (06 综合 一08 —0 1 5 5320 ) 0 09 3
拟, 引导学 生 去思维 探讨 ,使 抽 象 的 内容 活起 来 ,
掌握与巩固授课 内容 , 就是一个不错的方法 .
在 教学 中 , 每章学 习前 应 就本 章对 学生 的要 求
要明确 , 其 是 重 点 知识 与难 点 应 指 出 , 尤 有利 于 学
提高学生的学习兴趣 . 例如在讲解 L R类 的语法分 析过 程 中 , 先介 绍 L R分析 器 的结 构 , 出 L ( ) 给 R 0 分

编译原理课程教学改革与实践

编译原理课程教学改革与实践

Abs t r a c t : Di s c u s s e d t e a c h i ng c o nt e n t ,t e a c hi n g me a n s a n d e x p e r i me n t a l t e a c h i n g r e f o r m i n t he c o mp i l i ng p r i n c i pl e c o u r s e .Pu t f o r wa r d a s e t o f t h e o r y a n d p r a c t i c e o f i n t e r a c t i v e t e a c h i n g a nd l e a r ni ng r e f o r m s c he me .Th e t e a c hi n g SBiblioteka e p . 2 0l 3
文章 编号 :1 0 0 7 — 9 8 3 1( 2 0 1 3)0 5 — 0 1 1 2 — 0 3
编译 原理课 程教学改革 与实践
刘 磊
( 吉林 建筑 大学 城 建学 院 ,吉林 长 春 1 3 0 0 1 1 )
摘要 :从教 学内容、教 学手段和实验教学环节等方面对编译原理课程进行 了改革.提 出了理论和 实践互动 ,教与学互补的改革方案.教学实践表 明,编译原理课程的教学改革提 高了教与学双方 的积极 性 ,改善 了教 学效 果 ,取 得 了很好 的成 绩.
1 优化教学 内容
心理学研究表明 ,由于缺乏近期动机 ,学习的 目 标太远或太难 ,学生的学 习兴趣 和主动性可能会降 低.编译原理程序 的理论知识较多 ,较深p ,在课堂教学上如果更多地讲解这样 的理论 ,会让学生望而
却步.所以不论是在理论教学上还是在实践教学上 ,内容 的选取要有针对i 生,其原则是 “ 放宽抓细”. 在理论教学上要 “ 放宽” ,先从整体上全面地认识 ,让学生首先从总体上来理解编译原理是讲什么 的.编译原理课程的主要框架为词法分析 、 语法分析 、中间语言和 目 标代码生成 ,先要详细地介绍编译 的

《编译原理》实验教学大纲

《编译原理》实验教学大纲

《编译原理》实验教学大纲一、实验目的和任务编译原理是计算机科学与技术专业的一门重要课程,它主要研究的是将高级语言程序翻译成机器语言程序的方法和技术。

通过本实验课程的学习,旨在使学生掌握编译原理的基本原理和方法,培养学生对编译器结构与构造技术的专门知识和技能,为学生今后进行编译器设计与实现打下基础。

二、实验设备和工具1.计算机和相关硬件设备2. 编程语言的开发环境,如C/C++或Java三、实验内容1.实验一:词法分析器设计与实现a)实验目的:学习词法分析器的原理和设计方法,掌握正则表达式、DFA和NFA的转换方法。

b)实验任务:i.设计并实现一个词法分析器的原型,能够正确地识别出给定的程序中的词法单元。

ii. 使用给定的正则表达式设计并实现识别给定程序中的关键字、标识符、常量等的词法分析器。

2.实验二:语法分析器设计与实现a)实验目的:学习语法分析器的原理和设计方法,掌握上下文无关文法和LR分析表的构造方法。

b)实验任务:i.学习并理解上下文无关文法和LR分析表的构造方法。

ii. 设计并实现一个简单的递归下降语法分析器。

3.实验三:语义分析器设计与实现a)实验目的:学习语义分析器的原理和设计方法,掌握语义动作的定义和处理方法。

b)实验任务:i.学习并理解语义分析器的原理和设计方法。

ii. 设计并实现一个简单的语义分析器,能够对给定的程序进行语义分析和语义动作的处理。

4.实验四:中间代码生成器设计与实现a)实验目的:学习中间代码生成器的原理和设计方法,掌握中间代码的生成和优化方法。

b)实验任务:i.学习并理解中间代码生成器的原理和设计方法。

ii. 设计并实现一个简单的中间代码生成器,能够将给定的程序翻译成中间代码。

5.实验五:目标代码生成器设计与实现a)实验目的:学习目标代码生成器的原理和设计方法,掌握目标代码的生成和优化方法。

b)实验任务:i.学习并理解目标代码生成器的原理和设计方法。

ii. 设计并实现一个简单的目标代码生成器,能够将中间代码翻译成目标代码。

工科生《编译原理》课程教学的探析和实践

工科生《编译原理》课程教学的探析和实践

能是这个文法的某个产生式的右部 。 ” 。 这样 , 学生就能较 好地理解如何从一个文法求 出它 的所有L R ( 0 ) 项 目及其 手操作 , 从而形成技能。 自主学习模式符合素质教学 的时 代潮流, 并能为终生学习打下扎实基础。
参 考 文献 :
【 1 】 高瑞 . 对 自主 学 习教 学模 式 的 思 考 U 1 . 津 职 业 院校 联 合 学 报 ,
可 以培 养 学生 逐 步适 应形 式 化描 述 。接 着在 讲 解 “ 构 造识
《 编译原理》课程 的教学 目 标一般是使学生掌握形式 语言和 自动机的基本理论 , 以及编译程序有关的算法和开 发方法[ 1 ] 。考虑到对工科学生 的基本要求是能应用基本理 论解决工程实际问题 , 我们要求学生在能正确理解形式语 言和 自 动机的基础理论基础上 , 不仅能掌握其在程序设计 语言翻译 中的应用方法 , 而且能灵活应用于解决计算机工 程领域 中其 他有关 问题 , 例如 : 命令行处 理器 、 用户界 面 等。 我们 向学生强调 , 通过学 习编译原理这 门课程 , 掌握编 译程序的基本原理和有关算法只是一个方面 , 另外一个很 重要的方面是培养应用基本理论来解决实际问题 的能力 , 加强数据结构及其算法的综合应用能力 , 以及提高编制大 程序的能力。在教学 内容安排上, 我们把重点放在词法分
例如 , “ L R ( 0 ) 分析” 是《 编译原理 》 课程中非常精彩的 节 内容 , 但 由于涉及 “ 活前缀 ” 、 “ L R( 0 ) 项 目” 等许 多抽 象的术语 , 学生往往难以理解 , 特别对“ 构造识别活前缀的

有限 自动机” 的思想 内涵的理解难以透彻。 我们在讲解时 , 不是直接 给出这些术语 的定义 ,而是从一个L R 分析的实 例出发 ,让学生观察L R 分析过程 中分析栈内容 的变化及 其特征 , 引导学生发现“ 分析栈中的符号 串有三种格局 : 不 含有句柄 的任何符号 ; 含有句柄 的部分符号 ; 正好含有句 柄的全部符号。” 这 时, 可 向学生引入“ 活前缀” 和“ L R ( 0 ) 项 目” 等术语的含义 : “ 活前缀 ” 就是L R 分析过程中分析栈 中形成的一个符号串, 而“ L R ( 0 ) 项 目” 就是刻画这个符号 串的格局。最后给出“ 活前缀” 和“ L R ( 0 ) 项 目” 的形式化定 义。这种讲法 , 不仅可以使学生对这些抽象概念有具体的 感性认识 , 从而更容易地去理解相应 的形式化定义 , 而且

《编译原理》实验教学改革探索

《编译原理》实验教学改革探索
。 -


. .

. .
: 登 ….鼍 守 警 ..

:s 。
} 告
篙 一 : 一
菡毒

篓嚣
萎 篱 蔷- . … ~ 一:菇 础 性




11 扑 析 f 一 )( 计 "沾 世 ‘ 制 井 调 试 十 枷
维普资讯
20 0 6年第 1 2期
福 建 电

23 1
《 编译原理》 实验教学改革探索
汤 茂斌
(广州大学信息与机 电工程 学院计 算机 系 广 东 广州 50 0 10 6)
【 摘
要 】 本文分析 了《 : 编译 原理》 课程 实验教 学 中存 在的 f题 , - 对该课程 的 实验 内容 、 学方式和手段等 方面进 行 了 - I 教
编译 器 的开 发 应 用 能 力

提 高 学 生对 编 译 程 序 自动生 成 的 认 识 .综 合 性 实 验 还 包 含 了 对 语法 分 析程 序 自动 生成 的思 想 。 形成 从 低 到 高 、 接 受 知 识 到培 从 养 综 合能 力 , 级 提 高 的实验 课 程 新 体 系 。 合 设 计 性 实 验 需学 逐 综
,r”T )
, 什 埔 制 井 调 试 一十 浩 井 析 。 证 删 ‘. 加 i 坩 闭 茫  ̄ - 鼙 t dr原 理 的 】 韭 2

4 。 莩 析 … r二 试一 : 升 栏 岳 性 一 十涪 婚 砌 0

: . :| 。 二
分 析 程 序 , 深对 词 法 分析 、 法分 析 原理 的理 解 。另 外 还 安 排 加 语 个 语 义 分析 实 验 , 过上 机 实 习 . 通 加深 对 语 法 制 导 翻译 原 理 的

“编译原理”课程教学改革与实践探索

“编译原理”课程教学改革与实践探索
理” 课程 可 以 讲 授 的 内容 越 来 越 多 。 括 编 包 不 断 充实 、 新 教 学 内 容 , 最 新 的 进 件 是 如 何在 整 个 系 统 中协 调 运 行 , 是 实 更 将 这
译 程 序 在 内 的翻 译 程 序承 担 了实 现 语 言 的 展 转 化 为 课 堂 教 学 内 容 , 助 学 生 了解 本 验 最 重 要 目的 之 一 其 次 , 须 合 理 地 简 帮 必 功 能 , 所涉 及 的 知识 包 括 形 式语 言 、 它 自动 领 域 的 前 沿 及 最 新 发 展动 态 , 养 学 生 的 化 , 学生 比较 容 易 完成 。 对 编译 原 理课 培 使 针 机 理 论 等 语 言 定 义 、 译 与 实 现 的 基础 知 科 研 意 识 和 素 养 。 翻 程 的 特 点 及要 求 , 共设 置 了四个 实验 项 目。
编 译 原 理 是 计 算 机 科 学 与 技 术 专 业 的 力 和素 质 为 目标 , 适应 计 算 机科 学 、 别 体 会 到 了计 算 机 科 学 理 论 的作 用 和 意 义 。 以 特 专 业 必修 课 , 计 算机 学 科 核 心课 程 , 是 理论 是 编 译 技 术 发 展 为 主 线 , 经典 理 论 的 学 以 设计 一组 适 宜 实 验 内容 : 先 , 首 要将 编 性 和实 践性 都很 强 。 国外 和 国 内分别 从2 世 习 为 基 础 , 分 析 和 解 决 问题 的 能 力 作 为 译 理 论 和 方 法 在 实 验 中得 以概 括 , 学生 0 以 使 纪 6 和 8 年 代开 始设 置“ 译原 理” 程 , O 0 编 课 从 实 践 性 教 学 环 节 的突 破 口, 出 教 学 内容 不 仅 掌 握 它 们 本 身 具 体 应 用 , 且 掌 握 由 突 而 文 献专 著 内容可 以 看出 , 十年 来 , 编译 原 的 基 础 性 和 实 践 性 。 几 “ 这 些 理 论 和方 法所 构 造 编译 程 序 的 各 个部

编译原理课程的教学实践

编译原理课程的教学实践

助 学生 掌握 基础 理 论 和技 术的 同时提 高学 生 实 际动 手能 力 ,培 养他 们 开发 软件 的 工程 意识 和 团队 协作 精
神。 关键字 : 译原 理 ; 学效果 ; 编 教 工程 意 识 。
中图分 类 号 : 6 24 G4 .
文献 标识 码 : A
文 章编 号 :6 2 4 7 2 1)4 0 3 - 2 17 — 4 X(0 00 - 1 3 0
我 校 立足 于 应用 型 本科 院 校 , 养 的 是 应 用型 培 实 用性 人 才 , 此 我们 在课 程 教 学 过 程 中 要注 重 学 因
释 技 术 ,懂 得 编 译 器 在 后 台 的 编 译 方 式 和 编 译 过
程 。 生 们 在 编 程 时 才 能 有 正 确 的思 维 方 式 , 能 学 才
和技 术 具 有十 分普 遍 的 意 义 , 每一 个 计 算机 科 学 在
技 术工 作 者 的职 业生 涯 中 , 些原 理 和 技 术都 被 反 这
编 译原 理 课 程 中理 论 知识 特 别 多 ,难度 大 , 如 正 则式 、 有穷 状态 机 、 e 网 、 法 分析 等 , 生们 更 Pr t 语 学
个 硬件 系 统都 离 不 开编 译 程序 的作 用 , 同时 一个 编 译 程 序 的 好 坏 直 接 影 响 着 计 算 机 软 硬 件 资 源 的利
项 目开发模式角度 出发 , 探讨如何 有效提 高教学效果 。
2 编 译原 理 的教 学 内容选 取
用 , 且带 给 用 户不 同 的使 用 效 果 。编 译 器 的原 理 并
( 山学 院 信 息 _ 程 学院 , 徽 黄 山 2 5 2 ) 黄 T - 安 4 0 1

基于PBL的《编译原理》课程教学研究与实践

基于PBL的《编译原理》课程教学研究与实践

为主体 , 能较 好 地 提 高 学生 分 析 问题 、 决 问 题 的 能 力 。 针 对 解 目前 编 译 原 理 课 程 教 学 中普 遍 存 在 的 学 生 缺 乏 主 观 能 动 性 、 动 手 能 力 不 强 等 问题 , 者 结 合 教 学 实 际 , B 新 教 学模 式 作 将P L 引入 到 编 译 原理 课 程 教 学 中 , 典 型 问题 设 计 、 就 围绕 问题 重 新 设 计 课 程教 学 体 系等 问题 进 行 了探 讨 和 研 究 ,研 究 表 明 新 教 学模 式 能提 高 学 生 自主 学 习 、 决 问题 的 能 力 , 计 算 机 专 业 解 为
教 学 改 革提 供 了新 的 解 决 思路 关 键 词 : B 《 译 原 理 》 程 教 学 课 程 教 学体 系 PL 编 课
1引 言 .
计 算 机 专 业 对 学 生 主 动 学 习 和 实 践 动 手 能 力 的 要 求 较 高 , 业 课 教 学 在 加 强 理 论 学 习 的 同 时 必 须 面 向设 计 . 培 专 以 养 学 生 创 造 性 的思 维 方 式 。编 译 原 理课 程 是 计 算 机 专 业 的 主 干 课 和 必 修 课 , 时 也 是 一 门 实 践 性 较 强 的 课 程 , 中编 译 同 其 器 的编 写 既有 算 法 分 析 又 有 综 合 程 序 设 计 , 及 高 级 语 言 程 涉 序 设 计 、 式 语 言 和 自动 机 理 论 、 法 和 软 件 工 程 等 多 门 课 形 算 程 的学 习 。 长 期 以 来 在 编 译 原 理 课 程 教 学 中 , 取 的还 是 传 采
开 展 P L 学 , 师承 担 着 多 种 角 色 的 变 换 。 此 对 教 师 B教 教 因 的 专 业 能力 、 际 问题 的 开发 经 验 提 出 了更 高 的要 求 。 实 针对上述问题 , 们 结合教学现状 , 问题设计 、 学 内 我 在 教 容 整 合 、 新 型 课 程 设 计 、 核 标 准 制 定 等 方 面 做 了 大 量 的 创 考 工作。

编译原理课程的教学研究

编译原理课程的教学研究

0 . 引 言
编译原理是计算机及相关专业的一门重要 专业课程 . 在 计算机科 学中有很重要的地位和作用 . 已被国内外高校列为计算机专 业的主要 课程。它主要介绍了高级程序设 计语言编译程序构造 的一般原 理、 基 本设 计方法 、 主要实现技术和一些 自动构造 工具 。 通过该课程的学习 . 对提 高学生 计算机 软件素质 . 使学生真正认识 计算机信息处理实质并 综合运 用所 学的软件设计技术来分析 结语 编译原理作为计算机专业的核心课 程 .对培养学生的分析能力 . 2 . 教 学 中应 注 意 的 问 题 算法设计和实践能力 , 创新能力具有 重要作用 。 目前编译原理课程 的 2 . 1 灵 活运用教学手段 . 增强趣味性 教学改革 正是针对 这些问题从 理论教学和 在传 统教学方 法中 . 有很多 是教学成果 的精 华 . 能够灵 活地掌握 教学还有很 多不完善之处 . 从 教学方法 、 教 学手段等方 面进行 改革 . 从而不断 多种教 学手段 . 将原本 枯燥抽象 的理论变得 富有 趣味性 . 就 能很好地 实验教学进 行探索 . 帮助学生从一开始就摆脱为难情绪 .增强学 习的 自信心和学习热情 提高教 学效 果 由于计 算机处 理问题 的过程 与 日常处理 问题 有些不 同,概念 比较抽 象. 因此 . 在教学 过程 中利用易 于理解 的方式 转换 问题的难度 , 能达 到 【 参考文献 】 较好 的效果 例如定义文法所产 生的语 言时 . 需要利用规则完成推导 , [ 1 ] 雷字, 马新娜. 编译原理课程教学与实践Ⅲ. 中国电力教育 , 2 0 1 0 ( 1 0 ) : 7 1 — 7 2 . 从 而产生句子并形成语 言 这里就可 以对 比汉语句子 的结构和产生过 f 2 ] 徐杏芳, 夏浩波 编译原理教学模式探索 . 科技信息, 2 0 0 9 ( 2 2 ) : 1 6 8 .

“编译原理”课程教学方法的探索与实践

“编译原理”课程教学方法的探索与实践

教学 方式 有多 种 . 一种 都有 自己的特 点 . 要 根据 教 每 需 学 内容 、 学对 象灵 活选 择及运 用 。 教 一般来 说包 括 主题 探讨 式互 动 、 纳 问题 式互 动 、 选案例 式互 动 。 如 : 归 精 例 对于 编译 总体 过程 的讲 授适合 主题 探讨 式互 动 .可 以 通过 :抛 出主 题—— 提 出 主题 中的 问题— — 思考 讨 论 度 。要 想让 普通 本科 生对 编译 原 理有 一个 全 面 和深入 问题—— 寻找 答 案—— 归纳 总 结 五个 阶 段 完 成 互 动 。 的学 习和 了解 . 掌握 编译原 理 的 精髓 , 师在 教学 过程 在这 里 , 老 主题 为 : 编译 过 程 , 出问题为 : 译器 要 将一 提 编 中仅 采取单 一教 学方 法很难 实 现教 学 目标 。 因此 , 确保 个高 级语 言程 序 翻译 成 一个 机器 可执 行 的低级 语 言程 该 门课 程取 得较 好 的教学 效果 .综合 运用 多 种教 学手 序需 要经 历哪 些 阶段 .然后 让学 生根 据 以前使 用 高级 段 和方 法是 必须 的 。在多 年 的编 译原 理课 程 教学 实践 语 言开发 环境 编辑 、 调试 、 运行 程 序 的经验 来 思考 和讨 中 .我 们针 对课 程 中不 同的教 学 内容 和不 同的学 生情 论 。 同的学生 思考 的结 果可 能不一样 。 然 后老 师 和 不 再 境 灵 活运 用 了不 同的教学 方 法 .并 取得 了 较好 的教 学 同学们 一起讨 论 .从多 个候 选答 案 中寻找 准 确完 整答 效 果 。结合 教 学实 际 , 深入 思 考 的基础 上 . 在 我们 阐述 案 。 最后 归纳 1 0 2年第 1期
“ 译 原 理 ’ 程教 学方 法 的探 索 与 实践 编 ’ 课

编译原理课程教学改革与实践

编译原理课程教学改革与实践

不少学生认为学 习编译原理 的目的就是为了编写构造 编译 文本编辑器中的广泛应 用, 有穷自动机在字符 串查找中的运用 , 器,而在当前 ,各大软件公司都已经开发了非常优秀的各种高级 必经节 算法在网络 中的运用 ,由文法来定义 网络协议等。 语言的编译器 ,如果再去重复 开发 已无必要 ,所 以很 多学 生认
编译原 理是计 算机科学及相 关专业的一门重要 的专业基础 向学生们明确讲述了本课程 的重要意义 。
设 计 方 法 、 主 要 实 现 技 术 和 一 些 自动 构 造 工具 。l 过 编 译 课 和形式化表示是进行计 算机问题 求解的基 本途径 ,计算机 科学 L通
提 高软件设 计素质 ,开发更完善的应用软件 ,编译系统软件甚 计算机 思维能力。 编译 技术集 中体现了计算 机的思维能力,它 至操作系统 。
本 课程 包含 了大大 小 小十几 个 算法 ,如 NF 的确 定化, A
D A的最小化 ,L 1 F L()分析算法 ,L R分析算法 等。这些算法 构。对 于学生在学习的过程中提 出的问题, 我们不是简单地 回答,
大都很 复杂,比学生们以前接触 的数 据结构 中的算法要复杂 很 而是在课题上展 开问题 的讨论。在讨论 的过程 中让学生 自己总
中国 电力教育 CE E P

D I O 编码 : 0 3 6/ . s .0 7 0 7 ,0 02 . 1 1 .9 9 3 sn 10 ~ 0 92 1 .80 i 3
丽 鬲i
编译原理课程教学改革与实践
雷 宇 马新娜
摘要 : 编译原理是计算机科 学及相关专业的一门重要的专业基础课 。但是长期以来 ,编译原理教学中 存在学习目标不明确 ,课 程理

编译原理课程教学方法的改革与实践

编译原理课程教学方法的改革与实践

2012年第12期吉林省教育学院学报No.12,2012第28卷JOURNAL OF EDUCATIONAL INSTITUTE OF JILIN PROVINCE Vol .28(总312期)Total No .312收稿日期:2012—08—17作者简介:刘滢(1983—),女,吉林通化人。

通化师范学院计算机学院,助教,硕士,研究方向:人工智能。

编译原理课程教学方法的改革与实践刘滢(通化师范学院计算机学院,吉林通化134002)摘要:编译原理课程作为计算机教学的骨干课程,长久以来,存在着教学目标不明确,理论知识生涩难懂,算法编写困难等问题。

本文结合多年的教学实践经验,从实践教学的观点出发,总结了编译原理课堂教学方法的改革措施,以提高学生对理论知识的理解能力和实践动手的能力。

关键词:编译原理;实践教学;教学方法中图分类号:G642.0文献标识码:A文章编号:1671—1580(2012)12—0057—02编译原理课程是计算机及相关专业的基础课程之一,是学生了解计算机程序运行本质的途径。

通过计算机来解决现实问题的过程是将问题转化为自然语言,然后用任何一种高级语言的方式进行编程,最后在机器中运行。

高级语言转化成机器能识别的语言(机器语言)的过程就是编译过程。

简单理解,可以将此过程看成是经过多道程序的语言转化。

而这些转化的每一步实际上都是一个经典的算法,都是将实际问题用计算机解决的具体过程。

因此,编译原理中的基本理论和技术是专业计算机人员必须掌握的,在整个计算机事业生涯中是不可缺少的。

编译原理是一门理论性和专业性十分强的课程,它要求先修的计算机相关课程有:数据结构、计算机组成原理、汇编语言,至少一门高级语言等。

它对实践的能力要求也很高,是一门理论和实践紧密结合的课程。

一、编译原理课程教学现状编译原理课程涉及到的先修课程很多,一旦学生对哪个课程不十分掌握,那么再学起此课程来便有些吃力。

例如,学生对汇编语言的知识掌握不透彻,那么在讲解中间代码及机器代码的时候,需要将汇编的知识再重新粗略地讲解一遍,降低讲课的效率。

“编译原理”课程的网络辅助教学研究与实践

“编译原理”课程的网络辅助教学研究与实践
1 —1 8 9
+ ・ 一・ +
一 卜 - + - + --一 — 一 - 一・ } 一 + 一-一 — 一 + 一 + 一 + 一 — — 一 — 一 - 一 + 一 + ・ 一 — 一 - 一- — 一 — 一 — . - — + - 卜
刊 ,0 1 5) 5 - 9 2 1< :8 5 .
3 运 行管 理 、
2 】 黄 操 】中 网络辅 助 教学 平 台安 排专 人 负责 管 理 .负 责 网络 【 贾宇 波, 志 强 . 作 系 统课 程 网络 辅 助教 学 平 台 的 研 究U. 国校 外教 育.0 1 ) 6 . 21( : 4 71 与平 台 的全天候 正 常运行 .并 对教 学 内容 进行 定 期更
质量 。
【】 全 胜, 强. 于 网络 辅 助教 学 的研 究 性 学 习教 学模 式 U. 6杨 吴 基 ] 电 气 电子 教 学 学报 ,0 1 33: 1 9 2 1, ()9 - 3 3 [ 高原, 川 飙, 小 英 , 晋 . 于 网络 辅助 教 学 平 台的课 程 教 学 7 ] 温 严 秦 基
复杂 度 大 , 解 困难 . 生 在学 习过 程 中对 原理 的 理解 译 原理 的基本 理论 和重 点算法 .我们 开发 了主要 由编 理 学 和算 法 的实 现有 一定 的难 度 要 想 让 普通 本科 生 全 面 译 过程 演示 和 重点 算 法 演示 两大 组成 部分 的 “ 编译 原
新和维 护 在教 学 过程 中要求 学生 充 分利 用平 台进行
【 赖鹤 鏊, 明 华 . 3 】 衷 高校 网 络辅 助教 学 存 在 的 问 题 及 对 策 研 究 U. 】
江 西化 工 . 0 () 0 2 2 2 9 4: 1 0 . 0 2

普通本科院校编译原理实践教学改革探讨

普通本科院校编译原理实践教学改革探讨
E —+ E+T E—T T
1引言
( 表达式 或赋值语句)给出 中间代码 , , 不符合 的 字符 串给 出错误信 息。 内容 : 扩充的 BNF表示 ( 用 同实验三) 。
实验五
题 目: 语法分析 程序 L 1 4 R( )( 学时, 必做) 目的 : 通过该 实验使学生加 深对语法分析 中 自下而上分析 法中的 L R分 析法的理解 。 要求 : 给定的 文法 手工建立 L 1 对 R() 分析 表; 利用 L 分析法对 实验二 中词法分 析产生 R 的符 号进行语法分析 , 符合实验中文法描述 对 的字 符串( 达式或 赋值语 句) 出中间代码 ; 表 给 不符 合的字符 串给出错误信 息。 内容 : 用扩充的 BNF表示( 同实验三)
入的教 学改 革和 创新人 才 的培养 具有一 定 的意义 。 【 键 词 】 编 译 原理 教 学 内 容 课 程 实 验 关 【 中图分 类号 】H 191 【 献 标识 码】 A 文

【 文章编号1 1 7 —8 9 2 1 ) -o 一o 0 ( o 63 2 0o 5 16 i 6
供方便。 编译 原理 课程是 计算 机科 学 与技术 专业 实验要求 : 给定的带注释的 C语 占源程 对 的重要 专业课 , 它不仅能帮 助学 生更深 入地 了 序 , 利用该程 序去掉 注释 , 出去 除注释 的源 输 解计算 机以及计算机 程序的本 质 , 能提高学 程 序 。 还 生 进行 问题求 解的能 力 。本课 程 的理论性 和 实验 二 实践 性都 很强 。 国外和 国内分 别从 二十世 纪 题 目: 词法分析 ( 必做 , 学时 ) 4 六十和八 十年代开始 设置 “ 编译原理” 课程 , 目的 : 通过 设计编制调试一 个具体 的词法 从文献【 ,】 1 2两本专著的 内容 可以看出 , 几十年 分析程 序 , 加深对 词法分析原理 的理解 。并掌 来 , 编译 原理 ”课 程 可以讲授 的 内容越来 越 握 在对程 序设 计语 言源程 序进 行扣捕 过程 中 “ 多 。设置 该课程 的 目的在 于系统 地 向学生讲 将其 分解为 各类单词 的词法分析 方法 。 叙编 译程 序设计 的基 本理论 、 编译 系统的 结 要求 : 写程 序对输入 的源程 序字符 串进 编 构及编译 程序各部分 的设计原理和 实现技术 。 行 词法分 析 , 对符 合下述 文法描 述 的字符 串 , 通过 对这 些知识的学 习 , 使学生 既能掌握编 译 建立 单词符号表 , 不符合 的字符 串给 出错误 信 理论和编 译方法等方面 的基本知 识 , 又具有 设 息 。 计、 分析 、 实现和维护编译程 序等各方面的综 内容 : 用扩 充的 B F表 示如下 : N 合能 力。 该课程 一般 包括理 论教 学和 实验教 < 识符>一< 标 字母>{ 字 母> < 字>} < 数 学两部分 。编译原理理论 知识包括 形式语言 、 <整型常数>一< 数字>{ <数字>} 有穷 自动机 等抽象内容 及大量的算法 , 较难 理 < 算符>一 + 一 / ()= 解和掌握 , 因此 “ 编译原 理”的 实验教学对于 <字母>一 a b C … y B A C … Y 深化学生对 所学理论知识 的理解 , 提高学生 的 <数字>一 1 3 4 5 6 7 2 8 9 0 理论 联系 实践的 能 力和 编程 水平具 有 重要 的 实验三 作用。 题 目: 归下降分析 法( 学 时 , 做) 递 4 选 本文根 据编 译原理 课程 的特点 , 合 自己 结 目的 : 根据给 定的文法编制调 试递 归下 降 的教学经验 与我院的实 际情 况 , 探讨 了普通本 分析 程序 , 便对 任意 输 入的 符号 串进 行 分 以 科院校编 译原理 的实践教学 内容 的设置 。 析 。本次 实验 的 目的 主要是 加深 对递 归下 降 分析 法的理解 。 2课程实验的重要性 要求: 对给定 的文法 , 利用递 归下降分析 编 译原理 是 集理论 与实 践于 一体 的一 门 法对任意输 入的符号 串进行分析语 法分析 , 对 表 课程 , 在理论 课 中所介绍 的基本 概念 、原 理、 符合 下述 文法描 述的字符 串( 达式或赋值 语 方法 和算 法 , 定 要通 过 实验加 以理 解 和吸 句) 给出 中间代码 , 一 , 不符合的字 符串给 出错 误 收 , 能能够 达到 真正的 理解 、吸收 和掌握 。 信息 。 才 内容 : 扩充的 B 用 NF表示 如下 : 编译 原理课程 实 验的 内容主 要放 在对 词法分 <赋值语句>一<标识符 >=<表达 式> 析、 语法分析和语 义分析 、中间代码生成 、中 间代 码优化 和 目标代码 生成 的方 法 E 由于 。 <表达式 > 一< 表达式>{ < + 项> ~ 项>} < 编译原理课程 有很强的理论性 与实践性 , 学 (项> 在 <项>一< 项>{< 子> / }因 <因予>} <因 习时普 遍感到 内容抽象 , 易理解 , 不 掌握起 来 难 度很大 。因 此通过 教学 实践和 对学 生所做 子> 的调查表 明, 设计一组 与理论 内容 相配套的 实 <因子>一< 识符> ( 表 达式>) 标 < 即: S— i =E 验是 十分必要 的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译实验课程的教学研究与实践摘要:本文在研究了国内外高校编译实验课程教学情况的基础上,介绍了华东师范大学计算机系“编译原理实践”课的实施情况。

教师从教学内容、教学方法、教学手段等方面对该课程进行了深入的研究和改革,提高了学生的动手实践能力,有助于培养学生的“计算机思维能力”。

关键词:编译原理;实践教学;课程改革“编译原理”是计算机专业的一门核心基础课程,所介绍的知识是计算机专业理论知识的重要组成部分,包含了用计算机解决问题的基本思路和方法。

在教学中,理论与实践是相辅相成,互为促进的,因此编译实验内容的合理设置对搞好整个编译教学起着至关重要的作用。

我们一直非常重视编译实验的教学,多年来不断研究国内外高校的教学情况,结合学生的实际,对该课程进行了深入改革,取得了一定成效。

1国内外高校编译实验课程的研究1.1国外高校情况斯坦福大学(Stanford University)的编译课程使用的主要参考教材是业界经典的“龙书”——《Compilers Principles, Techniques and Tools》。

课程实验内容分为4部分,在课程的不同阶段进行布置:①词法分析(使用Flex);②语法分析(使用Bison);③语义分析;④综合前面的部分实现一个完整的Decaf编译器,生成在SPIM模拟器上执行的代码。

实验的后两部分较前两部分难度高,因此所给分值不同,分别是50分、60分、125分和125分。

整个实验部分占到了编译课程总评的70%。

卡内基梅隆大学(Carnegie Mellon University)在编译技术领域享有很高的国际声誉,该校的编译课程使用的主要参考教材是业界经典的“虎书”——《Modern Compiler Implementation》(ML版本)。

实验题目共有5道:①扩展给定的L1语言的编译器,使之能够将源代码转换成真实的X86汇编代码;②实现支持L2语言的完整编译器;③实现支持L3语言的完整编译器;④实现另一个支持L3语言并生成安全代码的完整编译器;⑤两者选其一,实现L3编译器的各种代码优化或者实现L3的垃圾收集器。

实验部分量很大,使用的现代编译器技术含量高,分数也占到了编译课程总评的70%。

加州大学伯克利分校(University of California, Berkeley)的编译课程使用的参考教材也是“龙书”。

课程实验要求实现一个Python语言编译器,依次分为3个项目:①完成针对Python语言子集的词法和语法分析器;②实现静态分析;③实现机器代码的生成。

实验部分占到编译课程总评的55%。

华盛顿大学(Washington University)使用的参考教材是《Engineering a Compiler》(Cooper & Torczon)。

课程实验项目是将一个用Java写的简单编译器完善成一个支持MiniJava(Java语言子集)的功能完整的编译器。

项目分5个阶段实施,分别是扩展MiniJava编译器,完成词法分析、语法分析、类型检查、中间代码生成和目标代码生成。

实践部分占编译课程总评的40%。

总体来看,国外高校的编译课程非常重视实验,实验内容量大且要求高,涉及到了面向对象语言编译器实现、代码优化等高级内容。

学生提交的实验作业须遵循严格的学术道德,严禁抄袭。

课程往往配备2~3名助教,解答学生疑问,协助教师检查实验作业。

1.2国内高校情况国防科学技术大学的编译课程使用的教材是陈火旺院士领衔编著、国内高校广泛使用的《程序设计语言编译原理》。

课程设置有两个实验:①调试PL编译程序,扩充PL语言成分,并对相应的编译程序进行扩充;②了解编译程序构造工具Lex、Yacc和JavaCC的使用。

实验成绩占总评的20%。

清华大学的编译课程教材选用的是自行编写的《编译原理》(吕映芝等著)。

实验内容题目由学生根据能力自选,分别是:①对PL/0编译程序进行扩充,用Lex 和Yacc实现一个简单解释器;②Deacf编译程序的设计和实现;③Java实现的Mini-Triangle编译程序。

三个题目难度从低到高,分数所占总评的比例分别是20%、40%和50%。

武汉大学的编译原理课程是国家精品课程,教材是自行编写的《编译原理》(何炎祥编著)。

课程实验是先在课堂上举出完整的小语言实现的例子,然后将该小语言扩充后作为实习内容;或者提供程序源代码而空缺关键模块,让学生完成。

吉林大学的编译原理课程是教育部—微软精品课程,教材是自行编写的《编译程序构造原理和实现技术》(金成植著)。

该校专门开设了独立的编译原理实践课程,共包含8个实验:词法分析程序开发、递归下降分析法、LL(1)语法分析、符号表管理、语义分析、中间代码生成、中间代码优化和目标代码生成。

以上高校的编译实验课程教学具一定代表性。

根据调查,国内高校编译实验课程的教学大致有以下几种安排:(1) 安排多次小型实验,分别支持编译程序的各个阶段。

此种方式是目前国内大部分高校采取的形式,由于编译过程每个阶段都有特定的方法和技术,故可以针对各个阶段设计不同的实验,根据理论教学的情况灵活安排。

实验难度相对较低,能够让学生掌握编译的有关技术,缺点是不能让学生学习到一个完整编译器的开发运行过程。

(2) 针对某一语言设计和实现一个相对完整、独立的编译器,或者研习现有的编译程序,对其进行扩充。

这种方式的难度根据语言规模的不同以及学生扩充程度的不同而有差别,弹性较大,有利于加强学生对编译程序的整体认识,且能充分锻炼学生的编程能力。

(3) 借助Lex和Yacc等自动生成工具直接生成编译程序。

这种方式需要学生花一定量时间研究工具的基本原理及使用方法,对编译程序前端成熟的理论知识是一个很好的再学习过程,但对编程能力锻炼不多。

(4) 其他涉及编译技术的实验。

此类实验强调编译技术在实际软件工程中的应用,如将词法分析器的设计扩展为中文网页分词的应用等,有助于培养学生理论联系实际的能力,灵活性较大。

总体来看,根据学生水平层次和培养目标的不同,国内许多高校实施了不同的实验,比较强调编译器前端的代码翻译技术,重视编译器最基本原理的实践,以培养学生的逻辑思维能力、编程和综合应用能力。

2我校编译原理实验课程的实践2.1教学简介我校计算机系自1979年建系时就开设了编译课程,在理论教学的同时给出一个精简的高级语言,要求学生完成词法分析和语法分析。

为了适应我国人才培养标准不断提高的要求,结合对国外高校编译实验课教学情况的研究,我们认为应该更加强调编译实验,适当提高难度,结合软件工程中的思想培养学生理论联系实际的能力。

因此,从2004年起,我们将原来在一学期同时完成理论和实践教学的“编译原理”课程拆分成在第6学期先讲授理论知识,第7学期专门开设“编译原理实践”课程,要求学生独立设计和实现一个完整的编译器,经过几年的实践探索,收到了良好的效果。

2.1.1课程描述课程名称为“编译原理实践”,属专业必修课。

课程选择了著名计算机科学家N.Wirth教授提供的PL/0语言作为实验语言,该语言是程序设计语言的典型代表,国内较多高校采用其作为编译教学使用语言。

教师讲解PL/0编译程序构建后,要求学生实现一个完整的PL/X语言编译程序(教师给出PL/X语言的形式化语法定义),包括词法分析、语法分析、出错处理、代码生成和解释程序,然后用PL/X语言编若干个程序,用自己开发的编译程序进行编译,能指出语法错误不中断,能生成代码程序,能解释执行代码程序,最后输出正确结果。

更重要的是,鼓励学生对PL/X语言进行定义扩展,增加更多功能。

教师还演示了使用Lex和Yacc生成PL/0语言编译器的过程,鼓励学生在编程实现PL/X编译器的基础上再使用Lex和Yacc 构建编译器。

2.1.2组织形式课程总学时72学时,其中教师讲课20学时,学生上机52学时,教师讲课集中在前10周完成。

教师讲授PL/0编译程序的设计开发占16学时,介绍使用Lex和Yacc生成PL/0语言编译器占4学时。

为了充分锻炼学生的综合能力,避免学生投机取巧,产生依赖心理,课程不采用分组的形式,而是要求每个学生都必须独立实现PL/X语言编译程序。

2.1.3评分规则评分规则规定,文档、程序、测试用例齐全,现场考核通过,成绩为60分。

学生对PL/X语言进行扩充的内容建议为:①增加运算符定义,如XOR、%等;②扩充语句定义,如case、for、continue等;③增加数据类型,在现有整型/逻辑型基础上增加实数、记录类型、数组类型等;④增加函数调用功能,进一步扩充带参数、返回值的函数功能;⑤增加类,补充封装、继承、多态等面向对象特性。

根据扩充内容的难易进行累计,给予2~40分的加分。

此外,良好的用户界面可获得加分;以Lex 和Yacc工具生成编译器也可获得加分。

2.2经验总结2.2.1突破教学难点,理论结合实践课程改进主要有两点:一是由于N.Wirth教授采用Pascal语言实现PL/0编译程序,而学生不熟悉Pascal语法,因此我们同时提供C语言版本的PL/0编译程序;二是分阶段系统地讲授PL/0语言编译程序各个阶段的设计开发,按顺序给出各个版本的范例程序,学生可以跟着教师的讲授进度进行同步的PL/X编译程序的开发。

这种方式降低了开发难度,使学生可以看到自己的开发成果不断完善,增强了信心,提高了继续探索的兴趣。

对课程的难点,教师也注意讲解方法,理论结合实践,使用多种教学手段。

比如PL/0编译器生成的目标代码是一种假想栈式计算机的汇编语言,而学生很少直接接触汇编语言,对目标代码指令感到陌生,且运行时的存储组织与分配又是编译原理的一个难点,因此教学就采用了先易后难的办法。

先给出不含过程调用的PL/0源程序生成的目标代码,详细介绍目标代码执行时数据栈的变化情况;继而给出含有过程调用的PL/0源程序生成的目标代码,再次分步介绍目标代码执行时数据栈的变化情况,重点讲解静态链、动态链、返回地址3个联系单元的作用;接着使用多媒体教学软件,以动画方式完整演示数据栈的变化情况,给学生整体思路;最后复习理论教学中各种运行时的存储组织与分配情况,让学生有深刻的体会。

再如语义分析和代码生成部分,一直是理论教学的难点,特别是控制流语句的回填技术等,在教师详细讲解了PL/0编译器中if语句和while语句的语义分析和代码生成实现后,学生对此有了实际体会,更进一步对for、case语句的实现产生兴趣,有动手将理论课上的方法用在作品中的意愿。

2.2.2激发学生潜能,延伸第二课堂课程的实验内容设计成可扩展的,使不同层次学生都可以接受。

由于有了分阶段的完整示例,基础薄弱、编程能力较差的学生只需在基本理解的情况下就可以模仿PL/0编译器构造PL/X编译器,消除了畏难心理;对于能力较强的同学,教师罗列出可扩展内容的建议,激发学生积极主动实践的意愿,拓宽学生的创新思维视角。

相关文档
最新文档