软件外包专业编译原理教学改革与实践

时间:2022-10-14 06:19:32

软件外包专业编译原理教学改革与实践

摘要:根据编译原理课程性质和特点,针对软件外包专业和学生特点选取合适的教学内容,介绍案例教学法、类比教学法、启发式教学法等多种教学方法在课程教学中的应用。

关键词:编译原理;案例教学;启发式教学;类比教学

0.引言

编译原理是计算机及相关专业的一门重要专业课程,主要介绍编译程序构造的一般原理和基本方法,在计算机科学与课程体系中占据重要地位,其原理、方法和技术在语言处理、软件工程、软件自动化、逆向软件工程、搜索引擎甚至非编译系统等诸多技术领域有着广泛的应用。同时又是一门理论性特别强的课程,其特点是内容多、理论性强、抽象性高、算法复杂度大、逻辑思维严密,学生在学习过程中对原理和方法学习起来具有一定的难度。学生普遍反映编译原理是一门难懂难学的专业课程,而且认为毕业後也很少有从事编译系统研发的机会,从而对该课程学习的认识上存在障碍,学习兴趣和积极性不高,影响了教学效果。

青岛农业大学理学与信息科学学院软件外包专业属于三本,虽然从2011级以後是二本招生,但分数居于二本分数线的低端。软件外包专业虽然也属于计算机大类,但培养目标不同,学生的基础相对差些,在教学过程中需要根据教学对象的专业特点、基本素质、知识背景等,对课程内容进行有针对性的组合与调整,选择合适的课堂教学方法,做到因材施教、因需施教。

1.教学内容选取

编译原理教学内容应强调对原理和技术的宏观理解及全局把握,针对编译的各逻辑阶段,在教学内容的选择方面既要考虑学生的特点和专业培养目标,又要保证教学内容的完整性与连贯性,使学生对整个编译过程及各个阶段的主要方法和原理有全面的学习与了解。

软件外包专业的学生基础比普通本科差,且授课学时比计算机专业少,理论课时仅为32学时。因此需要适当减少教学内容,通过多举实例、加强练习等手段确保学生对课程重点内容的掌握,删减的部分可以安排自学。

根据软件外包专业的培养目标、方案及本专业学生特点,选用陈火旺等编写的《程序设计语言编译原理》为教材,选取的教学内容见表1。

2.教学方法改革

兴趣是人们力求认识某种事物或爱好某种活动的心理倾向,是推动学生学习活动的内在驱动力。要想让学生学得好,需要不断地激发他们的学习兴趣,从而变被动学习为主动学习。在理论教学过程中,根据多年积累的教学经验,通过灵活采用如下的多种教学方法,激发学生的学习兴趣和学习积极性,提高教学效果。

2.1案例教学法

编译原理课程很多理论既抽象又繁杂,学生理解起来比较困难,如果在讲授过程中只是单纯地进行理论和方法的讲解,而不辅以实例,很难激发学生学习的兴趣和热情,达到理解掌握的目的。在理论教学过程中,结合具体的实例和案例使抽象的理论形象化和生动化,从而激发学生的学习兴趣和热情。

在引言部分讲解编译过程时,以一句英文(People who walk on the grass are liable to a fine)翻译成中文的过程为例进行讲解。

(1)识别出句子中的每个单词:People,who,walk,on,the,grass,ale,liable,to,a,fine。

(2)分析句子的语法结构:定语从句。

(3)根据句子含义进行初步翻译:在草地上行走的人易受罚款。

(4)对译文进行修饰:易受罚款中“易受”一词不太准确,改为“要罚款”。

(5)写出最後的译文:在草地上行走要罚款。

然後,将自然语言翻译的步骤对应到程序设计语言的编译过程5个阶段,对应关系如图1所示:

通过以上实例的运用,达到了认识整个编译过程的目的,而且很容易被学生理解和接受,在脑海中留下比较深刻和直观的印象,为後面深入学习各个编译阶段的理论与方法作好铺垫。

在讲解词法分析部分,正规式与FA的等价、NFA确定化为DFA和DFA的化简等核心内容时,可以用一道综合题将这些内容贯穿起来。如给定字母表∑={a,b},设计一个能识别∑上所有含有相继两个a或者两个b的DFA。要解决这个问题就需要根据题目要求先写出正规式,然後将其转换成等价的NFA,接着再确定为DFA,最後再进行化简。这样不仅通过一个典型案例把相关的内容综合起来,而且能够充分调动学生的积极性,使其在分析案例、得到结论的过程中提高综合知识应用能力和创新能力。

2.2类比教学法

编译原理涉及的原理与方法比较多,如此多原理与方法讲授起来及学生掌握起来都比较困难。基于同类方法中有一定的相似性,在讲解过程中,对同类方法进行对比讲授,总结各种方法的相似之处,突出并分析每种方法的不同之处,通过类比使学生更能明确掌握各种方法的原理和适用范围,从而在实际应用过程中能够选择合适的方法。

在讲解三地址代码的3种表示方法(三元式、四元式和间接三元式)时,将3种方法结合起来讲解,分析其相同和不同之处。相同之处在于每种表示方法都有操作符、两个操作数这三个域,不同之处在于临时变量如何来保存或者引用。针对不同的保存(引用)方式,不同方法就会有不同的优缺点。如四元式要增加一个监时变量域保存计算结果,从而增加了内在开销,但更改比较容易;而三元式通过计算临时变量值的语句位置来引用这个临时变量,虽然节省了内存开销,但使得更改变得比较困难,需要修改一系列的指示器的值。通过类比方法来讲解同类方法的原理,可以让学生更加深入地理解和掌握这些方法的优缺点,能够在实际应用过程中灵活使用这些方法。

类似地,在讲解SLR分析表的构造时,与已讲过的LR(O)分析表的构造进行对比讲授。在构造方法中,与LR(O)相同的地方可以不用重复讲解,只讲解归约(项目A->a,属于I)的情况。对LR(O)文法,对任何终结符号都要用产生式A->a,归约;而对于SLR文法,仅对任何属于Follow(A)中的终结符号用产生式A->a,归约。这样在LR(O)分析表的构造基础之上掌握SLR分析表的构造就比较简单,只要掌握上面所提到的不同之处即可。

2.3启发式教学

启发式教学强调传授知识的同时重视学生能力的培养及非智力因素的发展,它把学生真正置于主动者的位置,充分调动学生的积极性和主动性,激发学生的学习兴趣。由于本课程理论性较强,概念原理较多,充分发挥学生的积极性就显得尤为重要。

在授课过程中,要注重引导和培养学生自我发现问题的能力。例如讲规范归约的相关概念,句型的短语、直接短语和句柄等概念时,讲解形式化的定义学生很难理解,如果不能理解即使把概念记住,遇到具体的问题时还是无从下手,很难给出正确的答案。在讲授这几个概念的同时,以一个具体的句型(aAbcde)为例,将这个句型推导过程的语法分析树画出来(如图2所示),引导学生去思考这3个概念跟语法树有什么关系及如何在语法树中体现出来。

同时引导学生结合语法推导树回顾推导、直接推导的概念,以及如何在语法树中表示出来,从而引导学生去思考短语等概念的形式化描述如何用语法树这种比较直观的方式来解释。经过引导後,有的学生就会发现句型的短语可以由语法树的子树(以S、A和B为根)的叶子结点自左至右排列得到,分别为aAbcde、Ab和d,这时教师就可以在学生对此问题有了一定的想法和见解後给出结论,一棵子树的所有端末结点自左到右排列起来列成一个相对子树根的短语,将每个子树的末端结点排列起来,就得到了该句型的所有短语。经过学生思考之後,对问题的理解更加深入,同时通过积极参与到教学活动过程中,学习的积极性大大增强,课堂气氛也更加活跃。

3.教学效果分析

2012-2013学年第一学期,笔者对软件外包专业2010级8个班共281名学生进行编译原理课程教学方法改革与实践,取得了良好的教学效果。学生对该课程的学习表现出了较大的学习兴趣和积极性,上课出勤情况也有了较大的改善。期末考试成绩整体上有了一定的提高,不及格比例明显减少。期末考试的成绩分布情况统计见表2,各个等级人数分布统计曲线如图3所示。

从期末考试成绩分布情况表及统计曲线图可以看出,成绩在中等以上(70分以上)的人数占75%左右,不及格人数仅占3.56%,且各个等级成绩分布呈现良好的正态分布,改善了编译原理课程考试成绩偏低、不及格率高的状况。

学生对本门课程的教学比较满意,对教师评价分数高达94.976分(满分95);对教材评价分数为94.498分,(满分95)。

4.结语

为提高软件外包专业的编译原理课程教学效果,根据专业培养目标和学生特点,我们对教学内容选取、理论教学方法进行了改革与实践。这些方法大大地激发了学生的学习兴趣,取得了良好的教学效果。

上一篇:编译原理课程研究型教学方法探讨与实践 下一篇:基于计算思维的数据库技术及应用课程教学研究