研究型教学在编译原理课程中的应用探索
2009-02-01徐晶
徐 晶
[摘要]通过对研究型教学的研究,提出了将之应用于编译原理课程及课程设计中,探索研究型教学在课程教学实践中的模式,并提出了验证、应用、创新的三步掌握编译技术的课程设计方案。
[关键词]计算机教育;研究型教学;编译原理
[中图分类号]G40—057
[文献标识码]A
[论文编号]1009—8097(2009)13—0062—02
引言
传统教学是以教师为核心,以知识点为核心,是由教师确定学生应该学什么,学生怎么学,而研究型教学是以学生为核心,以好奇心作为学习的趋动力,但是如何在教学过程中把学生的激情找回来,这是教学改革中一个一直在探索的问题。本文通过对编译原理课程教学实践,对应用研究型教学进行了一些尝试。
一研究型教学定义
研究型教学是教师通过指导学生从自然、社会和生活中选择和确定与学科相关的专题进行研究,使学生在独立的主动探索、主动思考、主动实践的研究过程中,吸收知识、应用知识、解决问题、获取新颖的经验和表现具有个性特征的行为,从而提高学生的各方面素质,培养学生创造能力和创新精神的一种实践活动。研究型教学以培养学生创新能力为核心,以培养学生的创新精神和创新能力为目的,立足所学,从实际背景和问题出发,创设问题情境,在教师的引导下,确定课题,通过观察、实验、分析、归纳、猜想、论证、社会实践等方式进行学习。在专业必修课程中结合研究型教学模式能够将比较成熟的专业知识与领域研究热点将结合,使得每届教学内容都有新的变化。
二编译原理课程特点
编译原理课程是计算机科学与技术专业学生的重要基础课程。通过学习该课程,要求学生掌握计算机语言编译程序的基本原理、方法和工具,以及编译程序的管道/过滤器型软件体系结构,更深入地理解由ACM/IEEE-CS制订的“CC2005”中提出的12个核心概念,特别是其中的“概念和形式模型”。此外,通过学习编译原理还可使学生更好的理解计算机程序设计语言的内部机制,从而更好地理解和运用程序设计语言。因此,在编译原理课程中采用研究型教学,不仅使学生掌握编译技术的知识,还还可使学生更好的理解计算机程序设计语言的内部机制,从而更好地理解和运用程序设计语言。
三研究型教学在编译原理的应用
学生从被动接受知识到主动获取知识是研究型教学的最大特点,因此,在编译原理课程的教学过程中充分调动学生积极性是被反复强调的。为了更好的让学生理解编译技术,在课程开始时教师可以通过举例说明编译技术在计算机领域中的广泛应用,吸引学生学习课程的兴趣,比如:OQ软件是针对特定字符串进行识别并用图片替换来实现QQ表情,这是编译技术中词法分析的应用;数据库SQL语句执行之前都须对语句进行语法检查,这是正规式和正规文法的应用等。教师还应强调“语言是在软件设计中求解实际问题的一种重要途径”,告知学生在课程设计中可以选择实现当前流行的HTML、JDBC、RTF、PostScript、SQL、报表白定义等语言或子语言的编译器,激发学生的学习兴趣。
在设计教学计划时,为了突出能力培养,将课堂讨论题、课后研究题、课题提问成绩均计入学生最后的成绩。
教学计划将课程课题讨论题设计为36次,即每次课有一题,每题0.5分。根据教学大纲,课题讨论题可以在讲解新的知识点之前设计,比如:LR(1)分析方法会产生大量类似状态,如何将类似的状态合并而不会产生新的问题,从而引出LALR(1)方法;介绍完DFA、正规式和正规文法的定义之后,让学生思考三者之间是否可以转换、如何转换。
对于编译原理课程来说,研究型教学中的问题解决模式是根据学生自身知识水平和学习能力,由教师根据课程内容设置问题,学生收集科学事实,解决问题,得出科学结论并应用新知识这一个过程,教学计划中课后研究题就是采用这种教学模式。
课后研究题占课程成绩的7%一般以2~3人为一组,在整个课程中每组同学至少完成一次课后研究题,每次上课布置课后研究题要求一组同学在阅读教材的基础上对相关知识有所延伸阅读并进行相应实践,在下次课上课时给出10分钟进行演讲,题目的设置体现研究分析性与动手能力结合的趣味性问题,比如:解释型语言和编译型语言运行效率比较、设计URL地址的词法分析器。通过这些方式有效的激发学生学习的兴趣和积极性。
四课程设计方案设计
编译原理课程是计算机软件学科理论与实践相结合的典范,在理论课中所介绍的基本概念、原理、方法和算法,要通过实验加以理解和吸收,才能能够达到真正的理解和掌握。为此设计一组与理论内容相配套的课程设计是非常重要的。本文利用Lex和Yacc工具,提出了验证、应用、创新的三步掌握编译技术的课程设计方案。
正如前文所述,本课程设计并不要求实现某种指定语言的编译器,学生以小组的形式,可以选定一种目前计算机领域中流行的编程语言或子语言实现,这样的好处是,一方面可以使学生提高学习兴趣,实现某种语言的部分功能;另一方面可以提高学生的自学和创新能力。本课程设计如下:
1验证型实验,按照编写好的实验操作学习使用Lex和Yacc,如利用Lex计算文本文件的字符数、单词数;利用Yacc生成中缀表示的计算机器。
2应用型实验,构造选定语言的LALR文法,使用Lex和Yacc实现选定语言的词法分析器和语法分析器。
3创新型实验,用课程中讲授的分析方法,如递归下降分析法完成对特定语言的语法分析,并生成相应的语法树;将语法分析得到的中间代码换成自定义的四元式中间代码,并将其翻译成汇编代码。
在整个课程设计方案中,有层次的、阶段性实验课题让学生由浅入深系统学习编译技术知识,并能够应用学到的编译原理方法实现选定语言的编译器,使学生通过课程设计的学习后,即掌握编译理论和方法方面的基本知识,也具有设计、实现、分析和维护编泽程序等方面的初步能力。
五总结
研究型教学充分发挥学习主体的能动作用,把发展学生探索能力、实践能力、创新能力放在首位,满足拔尖创新人才发展的需要,以人的发展及人类的发展为本,体现学生自我塑造与人性的创造本质,改变当前大学教育中人才培养的狭窄化、技术化倾向,创造良好的教学与学术氛围。因此,如何将研究型教学应用于课程教学已经是目前高等教育热点问题,本文试图通过对编译原理这么重要基础课程教学方式的改革,使得学生不仅仅学习编译技术基础知识,还通过课后研究、课程设计培养学生问题意识,研究能力和创新精神。