SCI论文(www.lunwensci.com):
摘要:本文通过分析编译原理课程知识体系,总结出一套行之有效的“因点施教”课堂教学方案,即针对不同知识点采用类比教学法、问题引导教学法、分组学习等方法,从而使抽象变形象,繁杂变简单,将“一纸开卷”等方式引入到该课程的考核中。
关键词:编译原理;因点施教;类比教学;问题引导教学;分组教学
本文引用格式:翟海霞,等.编译原理课程的“因点施教”课堂教学方法[J].教育现代化,2019,6(62):131-133,139.
一 引言
编译原理是计算机科学与技术专业的一门专业核心课程,是理论性和实践性都很强的课程,其先行课程主要有数据结构、离散数学、计算机组成原理、线性代数和程序设计基础等,该课程教学目的是系统地向学生讲述编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,既涉及了形式语言理论、自动机、编译技术等抽象的内容,又是程序设计、算法、数据结构、离散数学等知识的综合体现[1]。学生通过本课程的学习,既能掌握编译的基本过程、基本方法、编译系统的组成,同时也获得设计、分析和移植编译程序方面的初步能力[2],对提高学生计算机软件素质、逻辑思维能力、抽象思维能力和形式化能力具有很大作用,可以使学生真正了解计算机的工作过程,认识计算机信息处理的实质,并综合运用所学的软件设计技术来分析解决问题[3],为今后从事应用软件和系统软件的开发打下一定的理论和实践基础。
二 存在的问题
编译原理涉及的前导课程较多,该课程内容丰富且具有严密的逻辑性和抽象性,算法复杂且不易理解,实践考核难通过,教师感觉难教,学生感觉难学,一直以来都被视为计算机专业最难教最难学的课程。因此,在教学过程中难免就会存在一些问题。如:教学内容比较偏重于原理,实践环节薄弱,学生就业后很少从事与编译器设计开发相关的工作,以致学生学习目标不明确,搞不太清楚研究编译原理到底有什么意义,缺乏学习兴趣。另外,编译系统的实现涉及其它相关课程,因此综合性、连贯性强,课本内容抽象,算法复杂,理论与实践脱节,使学生感到该课程枯燥难学。针对以上情况,如何改变该课程难教难学的现状,改善教学效果,提高教学质量,提升学生学习兴趣,帮助学生更好地学习和掌握该课程中的理论和算法,让学生的能力真正能够得到提高,是每个编译原理任课教师都要考虑和研究的教学难题。
三 课程知识体系分布
该课程内容虽然抽象复杂,但其知识点前后关联紧密,系统性强。课程知识体系是围绕着词法分析、语法分析、语义分析及中间代码的产生、优化和目标代码的生成这5个阶段展开的,其知识体系结构如图1所示。
四 “因点施教”课堂教学方法探讨
“因点施教”指的是针对课堂中不同知识点,根据其难易程度、算法特点等采取不同的教学方法,而非从头到尾采用某种单一的教学方法。本文提出将问题引导教学法、类比教学法、分组教学法等多种教学方法应用于该课程中不同知识点,在一定程度上化繁为简、化抽象为形象,这样不仅可以帮助学生更好理解课程中的知识点,还能够提高学生学习积极性、培养学生主动思考问题解决问题的能力。
(一) 上好第一堂课
第一堂课是教师和学生的第一次见面,其教学效果的优劣将会对该课程以后的教学效果起到至关重要的作用,教师必须高度重视第一堂课,尽可能营造轻松愉快的课堂气氛。编译原理的第一次课主要是介绍该课程的性质、地位和作用以及课程主要内容、知识结构、学习方法、应用领域等几个方面。任课教师可以通过图、表、动画、视频的形式,使用类比教学、案例教学等方法,采用形象、直观、易记的方式,开展第一堂课[1],比如通过介绍编译系统在计算机系统中所处的位置(如图2所示),让学生对抽象的编译系统先有一个初步的印象。
为了让学生更清楚编译原理与其他专业课程之间的关系,可以借助于图3进行讲解。
在介绍本课程的主要内容时,可以以自然语言的翻译过程类比编译过程的5阶段,让学生直观形象地了解编译的工作过程,同时对要学习的内容有初步的认识。
总之,要充分利用第一堂课,帮助学生系统了解编译系统在计算机系统中的地位以及计算机各专业课程中的定位,编译过程五阶段的划分,消除学生对该课程的恐惧心理,增强学生学好该课程的信心,为今后的学习奠定基础。
(二) 问题引导教学法
问题引导教学法是指在课堂教学中,教师依据课程内容需要,精心设计问题,学生通过思考分析提出解决方案,用问题激发学生学习兴趣,引导学生积极主动学习。对于编译原理,如果依靠传统的满堂灌的教学模式,很难改变该课程目前的教学现状。为充分调动学生的主动性,培养学生主动思考问题解决问题的能力,针对课程中一些重要知识点,采用问题引导教学法,使学生在老师的逐步点拨下,由学生自行寻找答案,增强学生学习的成就感,提升他们的学习兴趣。
比如在讲自上而下语法分析方法LL(1)分析时,假定有语法G1:
(1)P→Pa|Q
(2)Q→b|c
以及句子:caaa。
老师先提出问题“如何在从语法开始符号P推导出句子caaa的过程中选择正确的候选式”,有学生提出“从左到右或从右到左依次试”的方案,师生一起验证该方案可行性的过程中发现新问题:当P自左至右或自右至左选择候选式Pa时,推导进入了死循环,因此得出结论:左递归的存在严重影响自上而下分析过程。于是师生一同研究分析如何消除左递归。
掌握左递归消除方法之后,老师又给定文法G2:
(1)S→xAy(2)A→**|*
以及句子x*y。学生继续用自左至右选择候选式的方法进行推导,非终结符号A选择候选式**时出现了结果发现貌似“匹配成功”的假象,造成句子的推导过程需要推翻重来,即“回溯”现象。老师适时提出问题“产生虚假匹配原因是什么”,学生经过观察分析发现,原来是由于产生式A→**|*的两个候选式的左端有相同的符号“*”。于是师生共同研究如何消除候选式中存在的“公共左因子”,避免由于虚假匹配导致的“回溯”现象。
经过不断反复“提出问题-制定方案-发现问题-解决问题”,消除左递归以及构造FIRST集、FOLLOW集的原因和方法就不知不觉中被学生所掌握,LL(1)分析法也会跃然纸上。通过问题引导的教学方法,由学生独立思考寻找答案,不仅能让学生掌握相应的知识点,还能获得“自己发现问题解决问题”的成就感,树立学好该课程的信心。经过一段时间问题引导教学法的训练,多数学生会逐渐习惯自主“探究式”的教学模式,养成主动思考的习惯,在分析修正解决方案过程中,能够学会如何评价、比较不同方案,有助于批判思维的形成。
(三) 类比教学法
类比教学法是指通过将教学内容相似或相通的指知识类比为学生较熟悉的事物,以此建立知识模型,将复杂知识简单化,将抽象知识具体化,帮助学生深化对新知识的理解,类比教学法是一种由已知探索未知的重要方法[4]。编译原理以其算法抽象复杂而被公认为是最难教难学的课程之一,因此使用类比教学法来讲授该课程中的某些知识点,将会起到事半功倍的效果。
比如编译过程的五个阶段:词法分析、语法分析、语义分析、代码优化、目标代码生成,是该课程绪论中介绍的内容。学生记住这五个阶段并不难,但要想充分理解就有一定难度。教师应该鼓励学生在理解的基础上记忆,做到不仅知其然,还要知其所以然。编译器的任务是将用高级程序语言编写的源程序翻译成等价的低级语言目标程序。既然编译本质就是翻译,那么它的工作过程就与自然语言的翻译类似。此时,教师将一个语句的编译过程类比为一个英语句子的翻译过程,比如将“He gave me a book.“”翻译成中文要经过如下几步:①识别出句子中的五个单词He、gave、me、a、book分别为代词、动词、代词、冠词、名词;②分析句子的语法结构:主、谓、间接宾语、直接宾语;③根据句子的含义进行初步翻译;④对译文进行加工润色;⑤写出最后的译文。将这5个步骤与编译的5个阶段一一对应起来,如此类比教学能够让学生深刻理解这5个阶段划分的依据,并对编译原理所要讲授的内容有初步的了解。比如在讲形式语言分类时,由于内容抽象学生理解起来困难。根据形式语言分类是逐渐对产生式施加限制的特点,老师可以使用类比教学法,形式语言文法类比为四边形的例子,0型法对语法几乎没有任何限制,可将其类比为任意四边形,对边没有任何限制;在0型文法的基础上逐渐加以限制得到1型、2型和3型文法,类比于对四边形的边逐渐加上限制条件后得到平行四边形、长方形和正方形。经过如此类比,学生能够形象地明白四种文法之间的关系,此时再通过多媒体技术用动画的形式展示形式语言的演变过程,加深学生的理解和记忆。
(四)分组教学法
针对课程中一些较大较难的知识点,可以将其拆分成若干小的知识点,由繁化简、由大化小,这样不仅有利于学生吸收和消化,还能培养学生的团队协作能力和语言表达能力。
该课程中一些知识点以算法复杂、理论抽象而闻名,针对这些知识点,我们可以使用分组教学法。比如自下而上语法分析的LR分析,该知识点涉及内容多、算法复杂,但是又是学生需要掌握的重点。分组教学法要求老师提前将该知识点拆分成几个相对独立的部分,如基本思想、实现原理、项目集规范族的构造、分析表的构造、分析过程等,将学生划分为4-5人一组,每位成员承担独立的任务,各司其责,各自完成自己的任务后要互相讲解,最终达到共同学习的目的。分组学习结束后,采用课堂汇报的形式考核小组学习情况,最后老师查漏补缺、系统串讲,以便让学生完整地、准确地掌握该知识点。分组教学法将大且难的知识点拆分化简,有助于学生更好理解和掌握该知识点,能够培养学生的团队协作精神和语言表达能力,但该方法更适用于小班教学,对于大班教学可行性仍需进一步探索。
(五) 探索新的考核方式
在考试考核方面,考虑到编译原理的知识点逻辑性强、步骤复杂等特点,相对填空选择判断等题目,算法题和应用题更能准确地考查学生分析解决问题的能力,更适用于该课程的考核,因此建议考题全部为算法题和应用题。该课程素以算法多且难而闻名,要求学生熟练掌握所有知识点,确实有些强人所难。可以考虑将考试题目设置为5选3或6选4的模式,这样学生可以选择自己最有把握的题目做,减轻学生的心理负担的同时还可以帮助老师了解学生对各个知识点的掌握情况。
本门课程的学习目的是通过算法提高学生分析问题、抽象问题和解决问题的能力,记忆算法本身的步骤不是考核的要点,但传统的开卷考试也会让学生产生依赖心理,因此建议采用“一纸开卷”的形式,即在考试时只允许学生带一张考试专用纸进去,该纸张可以于考试前一周发给学生。学生除必须按要求完整填写个人信息外,学生可以自行组织记录知识要点和内容,但不允许打印、复印,必须由本人手写整理。考试时,学生可将该专用纸带入考场作为“开卷”考试的唯一参考资料,但考试过程严禁与他人传递交流。考试结束后,考生将专用纸与试卷、答题纸一并上交,一同存档[5]。“一纸开卷”的考试方式,不仅能够减轻学生死记硬背算法步聚的负担,还能让学生在准备“一纸”时重新梳理课程内容,也是一个有效复习过程。
五 结语
笔者根据自己多年的教学经验,总结出一套灵活多变的课程教学模式,针对编译原理课堂教学提出了“因点施教”的教学方法,即将类比教学法、问题引导教学法、分组教学法等不同方法应用于不同的知识点,使得抽象的理论知识变得形象,简化繁琐的算法,消除学生对该课程的恐惧心理,激发学生学习兴趣和信心,该方法已在河南理工大学计算机科学与技术专业实施多年,效果明显。由于该课程是一门理论与实践相结合的课程,下一步希望能够设计出一套科学合理的实验项目,使其与理论教学相呼应,两者相辅相成、互相促进,让学生更好的掌握该课程相关算法和技术的同时动手编程能力也能得到锻炼和提高。
参考文献
[1]沈睿,朱学君.关于“编译原理”课程的教学思考[J].科技视界,2014(4):135,162.
[2]徐秀娟,江贺,刘馨月,等.编译原理立体化教学体系建设探索[J].计算机教育,2017(6):45-49.
[3]刘妮.编译原理课程教学方法研究[J].贵阳学院学报(自然科学版),2016(4):67-69.
[4]陈晶,张鲲.类比教学法在计算机专业主干课程中的应用研究:以“编译原理”为例[J].教育现代化,2017(43):145-146.
[5]彭源,孙超超,田秀霞,等.编译原理课程教学改革与实践[J].电脑知识与技术,2018(3):134-135.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网! 文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jiaoyulunwen/15966.html