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

来源 :中国电力教育 | 被引量 : 0次 | 上传用户:pcfanzb
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:编译原理是计算机科学及相关专业的一门重要的专业基础课。但是长期以来,编译原理教学中存在学习目标不明确,课程理论性强,包含算法多等问题。经过多年实践,对教学方法从明确学习目标、启发式教学、抽象内容具体化、结合编译器实例教学和加强实验环节等五个方面进行了改革和舞践,取得了良好的效果。
  关键词:编译原理;教学改革;启发式教学
  编译程序是现代计算机系统基本的组成部分之一,它能够将用户编写高级语言程序翻译为计算机所能执行的汇编语言或机器语言那样的低级语言程序,从而实现用户程序的执行。
  

  编译原理是计算机科学及相关专业的一门重要的专业基础课,主要介绍程序设计语言编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具。通过编译课程的学习,学生可以认识高级语言程序在计算机中的处理本质,提高软件设计素质,开发更完善的应用软件,编译系统软件甚至操作系统。
  
  一、编译原理教学现状及存在的问题
  
  长期以来,由于编译原理这门课程具有较强的理论性和实践性,学生在学习过程中感到内容抽象、算法复杂,难于理解,因此编译原理被普遍看作计算机专业课程中最难学习的课程之一。总结起来,其原因主要是存在以下三个方面的问题。
  
  1.学习目标不明确
  不少学生认为学习编译原理的目的就是为了编写构造编译器,而在当前,各大软件公司都已经开发了非常优秀的各种高级语言的编译器,如果再去重复开发已无必要,所以很多学生认为编译原理这门课程缺乏实用价值。
  
  2.课程理论性强
  编择原理这门课程内容丰富且抽象,具有严密的逻辑性,除了具有自己的一套独特的理论体系,还涉及了大量的其他理论知识,如形式语言和自动机的理论、集合论、图论等知识。这些理论的学习对于本科生而言有一定的难度。
  
  3.课程包含的算法多而复杂
  本课程包含了大大小小十几个算法,如NFA的确定化,DFA的最小化,LL(1)分析算法,LR分析算法等。这些算法大都很复杂,比学生们以前接触的数据结构中的算法要复杂很多,学生们普遍感觉吃力。
  
  二、编译原理教学改革与实践
  
  通过结合多年的编译原理教学实践,针对以上问题,笔者从以下方面人手,进行了教学改革和创新,取得了良好的效果。
  
  1.明确学习目标
  有了明确的学习目标,有助于提高学生们主动学习的兴趣,增强教学效果。在编译原理课程开始学习的第一次课,我们就向学生们明确讲述了本课程的重要意义。
  第一,能提高计算机思维的能力。对现实问题进行抽象化和形式化表示是进行计算机问题求解的基本途径,计算机科学与技术学科要求学生具有这种抽象化和形式化思维的能力,即计算机思维能力。编译技术集中体现了计算机的思维能力,它采用若干理论和算法解决了高级语言到低级语言的翻译问题,为计算机和人对话提供了可靠的接口。学习编译原理有助于提高这种能力,有助于学生深刻理解高级语言的本质,从而正确使用高级语言。
  第二,编译原理对很多领域理论的研究具有深远的意义,如计算机软件技术领域,计算机系统结构领域,人工智能系统的机器学习领域,并行处理技术领域等。在讲解到具体内容的时候,我们注意对其应用的介绍,如:正规式和有穷自动机在文本编辑器中的广泛应用,有穷自动机在字符串查找中的运用,必经节点算法在网络中的运用,由文法来定义网络协议等。
  
  2.启发式教学
  在编译原理的教学过程中,我们采用了启发式教学方法,根据教学任务和学习的客观规律,从学生的实际出发,采用多种方式,以启发学生的思维为核心,调动学生的学习主动性和积极性,促使他们积极高效地学习。
  具体做法是:改变传统教学中老师讲、学生听的填鸭式教学模式,对于内容较为简单的章节,采取问题解决式教学模式,事先就这些章节提出具有启发式意义的问题,学生在学习中通过解决问题,理解相应的概念、理论,建立良好的知识结构。对于学生在学习的过程中提出的问题,我们不是简单地回答,而是在课题上展开问题的讨论。在讨论的过程中让学生自己总结结论,从而进一步加深对理论知识的理解和认知。
  比如中间代码优化这个章节,我们首先给出Z--个需要优化的四元式中间代码的例子,指出该代码程序可以由一个等价的、效率更高的、占用空间更小的程序来替换,启发学生思考怎样去优化。学生们经过思考和讨论,提出了优化的多种方法,这时候,教师对这些方法进行了总结和提炼,引出常用的六种代码优化技术,指明优化的重要意义。进而启发学生,这些优化是我们拥有智能的人类去做的,但是计算机没有智能,怎样设计数据结构和算法才能让计算机完成同样的操作呢?带着这个问题,我们开始继续深入探讨局部优化、循环优化等后续内容。
  
  3.抽象内容具体化
  编译原理的某些概念非常抽象,学生们不容易理解,只能死记硬背,这样就大大降低了学生们学习的兴趣。在讲解这些编译原理的过程中,我们在现实生活中找到一些实例,通过类比,可以加深学生对概念的理解。
  比如,从理论上来讲,编译过程分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等六个阶段,每个阶段都有不同的任务。记住这几个阶段并不难,但是学生们常常搞不清每个阶段的主要任90在教学过程中,笔者举了一个英文句子翻译为中文的例子,帮助学生们区分这六个阶段。翻译过程和编译过程对比如表1所示:
  又如,为了让大家更深入地理解二义性文法,我们指出自然语言是有二义性的,并举例,如英文句子“I am told toread a book by Tom,”有两种意思:“有人告诉我读一本Tom写的书”和“Tom告诉我读一本书”。通过类比,使得学生认识由于二义性句子的含义有多种解释,所以编译程序中一般不允许有二义性文法的存在。即使存在二义性文法,也要通过定义优先性等方法消除其二义性。
  
  4.结合编译器实例教学
  编译原理从根本上来讲是介绍编译器的工作原理,教材上对于理论的介绍较多,对于实际编译器的介绍较,少口我们在教学过程中,结合了当前流行的c语言编译器如GCC、TC、VC++等来介绍课堂知识,举了大量的程序实例,使学生不仅知其然而且知其所以然,加深了学生对课堂知识的理解,也提高了学生们的编程水平。
  例如,目标程序运行时的存储组织章节,有一部分内容介绍栈式存储分配的实现。我们以Vc++编译器为例,编写了一个简单的带有函数调用的程序,通过该编译器的编译命令CL.exe对程序进行编译,生成汇编代码。对比源程序和相应的汇编代码,模拟程序运行,对栈式存储分配的实现作了详细的讲解。学生们不仅学到了课堂内容,而且对C语言的子程序调用方法,传值、传地址的机制有了更加深入的理解,避免以后编写程序时再出现混淆错误。
  又如,高级语言的处理过程分为预处理、编译、汇编、装配/连接等四个步骤。为了加深对这四个步骤的具体工作的理解,我们在Linux操作系统下使用GCC编译器,对Hello World程序进行了分步处理,每一步都让学生们查看输入文件和操作后生成的文件,使学生深入掌握编译程序所起的作用。
  
  5.加強实验环节
  实验环节在编译原理的教学过程中占有举足轻重的位置,设计的实验共分为两个层次。
  (1)在课程学习过程中,设计了几个相互独立的实验,包括词法分析、语法分析和语义分析等实验。因为此时学生们的知识是离散的,只要求他们根据所学的知识模块编写相应的程序,目的是使学生通过思考和动手编写程序深入掌握算法。
  (2)在课程学完之后,设计了一个综合性的实验,要求学生们完成一个C语言子集的编译器。这需要学生们把编译原理的大部分知识串接起来,形成一个整体的概念,完成从词法分析到代码生成的整个过程。目的是让学生从总体上把握编译系统的主要功能,提高综合能力。
  
  三、结论
  
  近几年来,我们参考了大量的资料,主要在上述五个方面不断改革和创新,针对知识点的特点选用合适的教学方法,并从细节入手,不断改进教学课件,另外还开发了辅助教学软件,这些都极大地促进了教学水平的不断提高,为课程进一步发展奠定了良好的基础,受到了其他老师和同学们的好评。
  
  参考文献:
  [1]张素琴,吕映芝,等,编译原理(第2版)[M].北京:清华大学出版社,2005.
  [2]王柏,杨娟.形式语言与自动机[M]北京:北京邮电大学出版社,2003.
  [3]赵晓,张振国.“编译原理”课程教学改革探索[J].陕西教育(高教版),2008,(11)139,49.
  [4]郝爱峰“编译原理”教学探索[J].电脑开发与应用,2008,(12):73-74.
  (责任编辑:郝魁府)
其他文献
摘要:“电工电子学”是高等工科院校非电专业的一门重要技术基础课。针对学生基础差异大、学时数量有限等课程特,最,江苏大学从教学实际出发,整合、优化教学内容,采用多元化的教学模式以及加强实践教学等一系列改革措施,把更多、更新、更广的内容融入课堂和实践教学中,取得了良好的教学效果。  关键词:电工电子学;教学改革;网络平台;虚拟仿真    “电工电子学”课程是高等工科院校非电专业的一门技术基础课,是江苏
“网”这个字眼在当今信息网络时代中可谓盛行,拥有现代化科学技能并十分关心孩子教育的家长们会经常浏览各种家庭教育网站,阅读教育文章,了解新书及讲座资讯,甚至在网上咨询
摘要:“电子技术’作为电子信息类专业的重要专业基础课,有较强的实践性和工程应用性。为提高学生的学习主动性和动手能力,本文从理论教学、实践教学、考核体系三方面作了探讨和分析。  关键词:电子技术;实践能力;教学改革;素质培养    随着科学技术的飞速发展,电子元器件技术也在不断进步,高性能的电子元器件片式化成为发展的主要方向,电子电路及芯片的集成度也越来越高,如今的SOPC在工业、生活等方面随处可见
摘要:“信息论与编码”课程是通信类专业本科开设的专业基础课之一。本文针对“信息论与编码”教学内容的特点,结合信息专业特最。在教学理念和教学方法两方面,对如何改革“信息论与编码”课程教学,提高教学效果方面进行实践。结果表明,教学改革增加了教学的趣味性,激发了学生学习这门课程的兴趣,取得了良好的效果。  关键词:信息论与编码;教学方法;教学改革    信息论是信息科学的主要理论基础之一,它是在长期通信
中图分类号:G622文献标识码:A 文章编号:1672-8882(2014)04-094-01 一.提升教学自主性,努力适应新课改  教育教学改革使教师经常面对各种新的教育思想、教育理念、教学手段与方法,这既要求教师不断更新知识结构和观念体系,不断调适自身的教学情感和行为,也要求教师参与到改革中,成为教育教学理论研究的协助者和使用者,而不是被动实施者。目前,我国为了更好地实施科教兴国战略和推进素质
摘要:针对应用型本科的培养目标,结合“信息论与编码”的教学实践,对该课程进行了教学改革,通过优化教学内容,改革教学方法,为培养“理论基础扎实、实践能力强、有较强科技运用用能力”的应用型人才奠定了基础。  关键词:信息论;编码;应用型本科;教学改革    信息论是20世纪40年代由美国数学家香农提出的。对“信息论”的研究内容一般有三种理解:即狭义信息论也称经典信息论、一般信息论以及广义信息论。狭义信
摘要:本文介绍了行为导向教学法的含义及特点,针对单片机课程内容的特点和传统讲授教学方法的不足,对行为导向教学法在单片机课程教学中的应用进行了初步的研究,并通过实例对项目教学法和案例教学法的具体应用进行了详细的分析。  关键字:行为导向;案例教学法;项目教学法;单片机    随着电子技术的飞速发展,单片机在国民经济建设、军事及家用电器等各个领域得到了越来越广泛的应用。单片机应用课程已成为高等教育中各
电影在生活中扮演的角色不同,我们可能就需要用不同的方式对待:rn如果简单地把电影当作放松,那就很简单地走进电影院和孩子一起笑、一起哭就可以了,这无可非议地也是一种很好的
摘要:在“液压与气动技术’中采用基于工作过程的教学方式,增强了学生学习积极性和主动性,提高了学生的职业能力和职业素养,实现了就业为导向的高职教学理念,为其他课程的教学模式改革提供了实例和经验。  关键词:工作过程;行动导向;项目教学;职业能力  工作过程就是以一个教学内容为项目,从项目的计划、预算、实施、监督、完成和验收的整个实际工作过程。(如图1所示)  图1所示是“在企业里为完成一件工作任务并
摘要:互动探究性教学是指教师采用多种有效的方法,引导学生经过自己的探究,去发现问题、提出问题、解决问题,进而得出正确的结论。教师可以从备课入手,转变教学理念;从课堂入手,创设问题情景,引发认知冲突;引导学生探究,自发交流提问;培养学生质疑、释疑的能力;教师答疑点拨,适时强化拓展;联系日常生活,自我体验归纳等方面,进行互动探究性教学。  关键词:转变教学理念;互动探究;认知冲突;质疑释疑;答疑点拨;