“项目驱动”在编译原理教学中的应用

  • 格式:pdf
  • 大小:161.55 KB
  • 文档页数:2

第33卷第2期 唐山师范学院学报 2011年3月
Vol. 33 No. 2 Journal of Tangshan Teachers College Mar. 2011

──────────
收稿日期:2010-12-23
作者简介:吉梅(1982-),女,江苏大丰人,硕士,温州医学院信息与工程学院助教,研究方向为计算机应用。
-136-

“项目驱动”在编译原理教学中的应用
吉 梅1,张 静2
(1.温州医学院 信息与工程学院,浙江 温州 325035;2.唐山师范学院 教务处,河北 唐山 063000)
摘 要:针对编译原理课程教学中存在的一些难点问题,提出基于“项目驱动”的编译原理教学方法,并通
过项目模块化的方式提高学生的实际应用能力。
关键词:计算机教学;编译原理;项目驱动
中图分类号: G642 文献标识码:A 文章编号:
1009-9115(2011)02-0136-02

The Application of Project Driven Teaching for Complier Principle
JI Mei1, ZHANG Jing2
(1. School of Information and Engineering, Wenzhou Medical College, Wenzhou 325035, China; 2. Division of Teaching Affairs,
Tangshan Normal University, Tangshan 063000, China)

Abstract: Complier principle is deemed as a curriculum with lots of difficulties in both learning and teaching. Owing to this reason,
this paper proposes a method of complier principle based on project driven in teaching. And the student’s capability of application is
increased through a manner of project modularization in practice.
Key Words: computer teaching; complier principle; project driven

编译原理是计算机本科专业的一门重要的专业基础课。
该课程所讨论的原理与技术,既适用于程序设计语言的翻译
和编译器的构造,也适用于其它系统软件和应用软件的设计
与实现。“编译原理”被公认为是计算机专业本科教学中最
难教、最难学的课程[1],主要是因为:(1)“编译原理”综
合性比较强,涉及的先修课程比较多,包括离散数学、数据
结构、汇编语言、程序设计等,对学习者专业基础知识及其
掌握要求都比较高;(2)“编译原理”理论性较强,涉及到
的一些理论知识抽象深奥、晦涩难懂,如形式语言与自动机
理论等。(3)“编译原理”的实践性较强,一般的编译程序
都比较复杂且规模庞大,教师很难在有限的课时内把编译器
涉及的各个细节都讲透彻。
1 “编译原理”教学中存在的问题
1.1 重理论,轻实验
由于各个学校软硬件基础的原因,很多高校都把培养的
重点放在理论教学上,实验课时安排得很少,有的甚至根本
未开设实验课。这使得学生很少有机会理论联系实际,缺乏

程序编译的直观感受,学习兴趣不高。
1.2 理论课堂教学效果差
由于编译原理课程中涉及到很多的概念、定理,再加上
一些复杂的算法,课程内容显得比较枯燥。尽管很多高校也
提出了一些教学改革方案,如比喻式教学法、启发式教学法、
构建多媒体教学环境等,在一定程度上调动了学习的积极
性,但课堂效果总的来说还是不明显。
1.3 实验环节薄弱
大部分学校将实验内容安排在词法分析器、语法分析器
的构造上,而对编译器后端语义分析及代码生成部分内容涉
及较少。同时,实验项目的选取一般都以孤立算法的实现为
主,较少要求去完成一个规模型的编译项目设计与现实,直
接导致学习者对编译程序的总体把握不够。
1.4 理论与实际应用脱节
通常在编译原理理论教学过程中并不涉及编译器的具
体实现
[2]
。由于理论知识的讲解与学习都是采用自然语言进

行实际应用中则要采用计算机编程语言来实现,对于学生而
吉 梅,等:“项目驱动”在编译原理教学中的应用
-137-
言,从理解理论并且可以套用公式解题到能够编程实现存在
一个巨大的鸿沟。因此,在上机实践时很多学生没有思路,
感到无从下手。
2 “项目驱动式”教学方法
项目驱动教学法以项目为核心,由教师根据各个阶段的
教学目标提出项目设计任务,针对所提出的问题,采取演示
或讲解等方式,给出完成项目的思路和方法,逐步引导学生
边学边练,并通过协同合作实践来完成整个项目的目标[3]。
通过将一个具体的实践项目贯穿到整个编译原理课程的教
学过程中,以具体的实例让学生能在学习这门课程各个章节
内涵的同时逐步提高他们学习的兴趣,以至最终理解并真正
掌握编译原理技术。
与传统的教学方法相比,“项目驱动法”能更大地激发
学生的学习兴趣和求知欲望[4],促使学生主动学习,充分挖
掘学生的创造潜能,提高学生的思维能力、实践动手能力以及团队协作能力。 3 “项目驱动法”在编译原理中的应用 项目设计是整个项目驱动教学过程的关键。为了让学生能够掌握编译器的各个环节,采用自定义的简单绘图语言,以该语言编译器的实现为项目贯穿整个教学过程。 3.1 提出项目任务 在学生了解编译程序的结构之后,提出项目任务,演示、讲解完成项目的思路和方法,让学生对整个项目有一个总体、初步的认识。 3.2 提高理论课堂教学效果 在运用多媒体教学手段、比喻式教学、启发式教学外,将项目的具体实现引入课堂。在理论教学的同时,适当介绍算法的具体实现以避免理论与实践的脱节。例如,在讲解词法分析的同时,介绍该绘图语言词法分析器的设计与实现。该绘图语言分为关键字、常量、标识符、界符和其他五类单词,各单词的词法规则如下: (1)关键字。该语言只有For、Next、Point、Line、Circle和Scale几个有限的关键字。其中For-Next用于循环语句;Point、Line和Circle用于绘制图形的方法;Scale用于定制图形的坐标系统。 (2)标识符:以英文字母开头的字母数字串。 (3)常量:非零开头的正整数,用来表示图形的坐标。 (4)界符:如分号、小括号等。 (5)其他:如空格、注释(支持Java单行注释)等。 在给出词法规则后,将语言的词法规则用正规式的形式描述单词,并利用ANTLR构造该词法分析程序,然后对ANTLR自动构造的词法分析程序进行分析和测试,从而使学生理解整个词法分析过程。其ANTLR描述如图1所示。 图1 绘图语言词法规则的ANTLR描述 3.3 插件式编程思想[5]
为了让学生能够整体把握编译技术,将项目分成不同的
模块,每个模块都是一个独立的插件。在每一个阶段的练习
中,我们将提供其它模块的代码,让学生立即看到运行效果,
同时产生成就感,从而提高他们的编程兴趣。
3.4 项目模块化
在整个教学过程中,可以将知识点分解到不同的学习阶
段并形成不同的模块,分别交给不同的学生组合去具体负责
相应的模块实现,使学生都能够切实感受到知识应用的效
果,使之加深理解,并以此来提高学习者的兴趣。
3.5 因材施教
对于基础差、确实无力完成实验要求的学生,提供标准
代码,要求能够看懂,能够讲解就给达标。
4 结束语
通过分析编译原理课程的特征、教学中存在的问题,提
出了项目驱动教学法在编译原理课程教学中的应用。

[参考文献]
[1] 何炎祥.现代教学理论指导下的编译原理教学综合改革
[J].计算机教育,2010,(1).
[2] 龚宇辉.编译原理教学改革的理性思考[J].教育与职业,
2009,(9).
[3] 关莉莉.项目驱动在高校计算机基础教学中的应用[J].科
技通报,2009,(9).
[4] 冯阿芳.基于建构主义学习理论的《编译原理》课程教学
改革[J].继续教育研究,2009,(8).
[5] 舒忠梅,李文军.编译原理课程实践教学改革探索[J].中山
大学学报(自然科学版),2007,(S2):101-104.

(责任编辑、校对:田敬军)