APP下载

“编译原理”课程的教学新思考

2010-04-12

关键词:编译器计算机专业原理

张 艳

(上海理工大学 光电信息与计算机工程学院,上海 200093)

“编译原理”课程的教学新思考

张 艳

(上海理工大学 光电信息与计算机工程学院,上海 200093)

本文论述了“编译原理”课程对计算机专业学生专业能力培养与素质提高的必要性和重要性,提出了“编译原理”课程理论教学和实验教学的新方法和新模式。解决了新形势下,“编译原理”课程要不要设置以及如何教授的问题,为“编译原理”课程的“教”与“学”提供了一些新思维。

编译原理;能力培养;教学

从当前的就业情况看,计算机专业的学生在软硬件知识和应用能力上的优势逐渐弱化、在与具备特定行业、应用领域和专业背景的学生竞争就业时,面临的压力越来越大,而在已就业的学生中又少有人从事编译系统的研究和开发工作。所以,“编译原理”作为计算机科学与技术专业的“经典”核心课程的存在价值受到质疑。其实,本科教育解决的是培养学生基本专业能力、可持续发展能力这些本质性的问题,因此,我们要从如何结合专业课程完成学生专业能力的培养与素质的提高这样的角度来看问题。

在大学里,学习一门课程,不能简单、肤浅地看成是对这门课程所含内容的研究、设计和开发,而是关注是否在有限的时间内最有利于学生专业能力的培养。计算机是一门技术性、工程性和应用性很强的学科,有其自身的基础理论支撑体系。“编译原理”课程本身以计算机专业基础知识为载体,含有问题求解的典型思想、技术和方法,整个课程的内容对培养学生的计算思维、程序设计与实现、算法设计与分析、计算机系统的认识、开发和利用等学科基本能力都非常重要。并且,编译技术在计算机体系结构设计、提高软件开发效率与质量的工具开发等方面有着重要的应用。因此,“编译原理”课程不但有存在的价值,而且对于计算机专业学生的能力培养和素质提高有着极其重要的作用和意义。作为计算机专业的教育工作者,我们应该结合当前计算机的发展状况,重新认识“编译原理”课程的重要性,并根据当前的教育和就业形势,积极研究、改进“编译原理”课程的教学和实验方法,提高教学效果合质量。

一、明确“编译原理”课程对学生能力培养和素质提高的重要性

从课程体系总体设计看,“编译原理”课程的主要教学目标之一是使学生在系统的级别上重新认识算法和程序,提升学生的系统能力,是计算机专业课程中最难学的课程,既涉及形式语言和自动机等抽象理论,又是数据结构、程序设计语言、算法和软件设计等知识的综合体现,有效培养了计算机专业学生应具有的计算思维;算法设计与分析;程序设计与实现(硬件和软件实现);系统的认知、分析、开发与应用等四大基本能力。

计算学科问题求解的基本思路是“问题→形式化描述→计算机化”,以抽象、理论、设计为其学科形态。“编译原理”课程中要求学生掌握的包括程序变换基本概念、问题描述和处理方法(自顶向下、自底向上、逐步求精、递归求解,目标驱动,问题分析、问题的抽象与形式化描述,算法设计与实现,系统构建、模块化)等知识、思想和方法,有利于学生养成“问题、形式化描述、计算机化”问题求解的习惯,实现从“实例计算”到“类计算”和“模型计算”的跨越。这其中既有明确的、便于抽象的问题,又有较成熟的理论,而且在限定规模下又容易实现(设计),涉及的是一个比较适当的抽象层面上的数据变换,所以该课程是计算机专业本科生的重要专业技术基础课程。

二、“编译原理”课程“教”与“学”的新思考

目前,在“编译原理”课程教学中,“教”与“学”两方面的问题都很突出:一些抽象的重要理论使学生学习的畏难情绪严重,加上有些人认为毕业后很少有机会参与设计与实现编译系统,使得该课程的“教”与“学”的热情偏低,而适用于新型体系结构及新一代计算机系统的编译器的需求和大量应用,也给“编译原理”课程内容的充实与更新提出更高要求。

作为教师,要让学生深刻认识到:(1) “编译原理”是许多课程知识的集成与实践,能进一步加深对许多专业基础课程知识的理解;(2)编译程序所使用的原理、方法和技术有利于领悟计算机理论的精髓,在非编译系统的实际应用中也发挥着很大作用。(3)学习编译对今后从事应用软件,语言开发平台、编译系统甚至操作系统的开发等工作非常有益。

实践证明,如果首先让学生认识到课程内容的重要性,再辅之以合适的教学方法和教学手段,是不难取得好的教学效果的。根据笔者的“编译原理”课程教学经验,认为对于该课程的设置和教学可以从以下几个角度来开展:

1. 科学设置课程

对于“编译原理”课程的设置问题,可以根据本科院校自身办学宗旨,从普通高校本科、重点高校本科和研究生阶段教育三个层次来考虑教学目标和培养要求等因素,在总学时的限制下,实现总目标的最佳课程。因此,可以考虑以下2种模式:

(1)课程分解模式:分为“编译技术”(必修),介绍为满足基本应用而需要学生掌握的基础知识、方法和技术,以达到语言转换和实现理论基础介绍的目的。另一门为“编译理论”(选修),主要偏重于形式化等原理性的深层次内容,方便有进一步深造需要的学生学习。

(2)内容分解模式:不单独设置一门“编译原理”课程,根据深浅和涉及到的具体问题,将与其他课程相关的内容分解到不同的课程中去,使学生在相关课程的学习中逐步掌握相关知识。(这和前者比有一定难度:一是课程难分解,课程内容分解后与其他课程内容的重新整合在短时期内难做到科学分解与组织;二是增加了其他课程授课教师的工作量与难度)

2. 优化教学内容

教师还要坚持教学与科研相结合,将最新的教改和科研成果引入教学,将经典编译理论与现代编译技术有机地结合起来。例如,可以将嵌入式编译器、分布并行编译器、多核编译器、可信编译技术以及适应新体系结构及新一代计算机系统编译器的研究及其研究结果迅速充实到“编译原理”课程中。此外,还可以向学生介绍编译技术在人工智能、并行计算、自然语言处理等领域里的具体应用,为后续课程做好铺垫。

3. 用实例演示来形象化抽象理论

学生学习“编译原理”课程的最大困难是其抽象性,要获得好的教学效果,就要形象化抽象理论。改革教学方法,提倡互动式、研讨式 和案例式等教学方法。一方面,可以通过实例类比。例如,用自然语言的翻译过程来类比编译程序执行高级程序设计语言的翻译过程。另一方面,教师可以借助多媒体手段,把抽象的原理用动画、图像等形象化的方式展示,便于学生的理解。同时,还可以向学生推荐网上优秀的“编译原理”课程教学网站、电子书等资源,拓宽学生视野,培养和激发学生学习兴趣。

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

在教学过程中,充分考虑“编译原理”课程与数据结构、计算机组成原理、操作系统、算法分析与设计等先修课程之间的内在联系,并不断深入和强化,以加强课程的系统性,培养学生的全局观。同时还要把握编译过程各个功能阶段的内在联系与规律,有目的地设计问题,有意义地提出问题,通过问题把编译原理中的理论难点、抽象概念引导出来。

三、重视实验,建立行之有效的实验教学方法

设计和组织良好的实践教学环节可以使“编译原理”课程获得良好的教学效果。现在很多高校都增加了实验学时,并独立计算实验成绩。我们在借鉴兄弟院校和国外经验的基础上,摸索出验证性实验加综合设计性实验的2阶段实验教学模式,各高校可根据自己的教学目标和培养要求来选择实施。

1. 验证性实验

这类实验主要是为配合配合课堂授课内容,由教师按编译原理授课顺序,提供同步的若干验证性实验题目,让学生逐个完成相关子模块,逐步扩大完善整个编译程序。这样循序渐渐地完成实验,不仅增加了学生的成就感和自信心,而且使他们养成扎实的作风,使学练互动,激发学生学习兴趣和积极性。而作为教师,则要做好组织、监督和解惑工作,帮助学生解决编译系统主要技术、算法的理解和设计,引导学生从整体上把握编译系统的结构和各子系统之间的协调工作。

2. 综合设计性实验

一定规模的综合设计性实验训练是保证实践教学效果必不可少的环节。我们可以让学生以小组(由4~5名成员)为单位结合软件工程课程实验的环节完成一个规模适度的编译程序开发。在实际操做时,可根据验证性实验阶段的情况,把学生分成不同层次的小组,由他们选择适合自己水平的不同的实验题目。每组遵循完整的编译器开发方式,融入软件工程的思想,由大家推举的组长分工、协调完成任务。这样,不仅能让每个学生体验从分析设计、编码测试到交付维护的软件开发全过程,还提高了他们的工程和团队意识以及开发大型软件的协调结构设计能力。实验结束时,教师要求学生以演示系统、答辩的方式公布实验成果,以便公正评分。

四、结 论

总之,“编译原理”课程很好的体现了计算机专业课程的系统性、完整性、科学性和原理性,对培养学生的专业能力和提高他们的专业素质起到关键的作用。在新环境和新形势下,作为专业课教师,首先,我们要认清“编译原理”课程存在的必要性和重要性;其次,我们必须改革理论教学和实验教学的方法,激发学生学习兴趣和积极性;最后,我们必须展开新编译方法和新编译技术的研究,并将研究结果迅速充实到“编译原理”课程中。在计算机专业课程的教学道路上,我们任重而道远。

[1] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业人才专业能力构成与培养. 北京:机械工业出版社,2010

[2] 霍欢,彭敦陆,张艳. “编译原理”课程的教学研究[J]. 计算机教育2009(23):26-28

[3] 张昱,陈意云. 编译原理课程实践改革探索[J]. 计算机教育,2008(8):24-26

[4] 蒋宗礼. 谈高水平计算机人才的培养[J]. 中国大学教学,2005(9):24-27

[5] 杨海燕,史晓华,张莉.“编译技术”实践环节的质量管理体系及实践[J]. 计算机教育,2009(17):61-63

The New Teaching Thought of Compiler Principle’s Course

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

Compiler Principle is very necessary and important for the university students of Computer Science and Technology, especially for training their abilities and increasing their inner quality. This article introduces some new teaching methods and modes for the theoretic and experiment education of Compiler Principle. At last, this article draws the conclusion that the course of Compiler Principle is necessary and has a long wag to go.

Compiler Principle;ability training;course teaching

shlg201003

猜你喜欢

编译器计算机专业原理
“以赛促学,以赛促教”促进计算机专业教学理念创新与实践研究
了解咳嗽祛痰原理,有效维护健康
基于相异编译器的安全计算机平台交叉编译环境设计
平均场正倒向随机控制系统的最大值原理
化学反应原理全解读
通信原理教学改革探索
职业高中计算机专业教学改革浅析
通用NC代码编译器的设计与实现
非计算机专业C语言教学探讨
新形势下技校计算机专业人才培养探讨