摘 要:《编译原理》是计算机科学与技术专业的核心课程,结合南京邮电大学通达学院教学大纲与本课程特点,探索出了一系列有针对性的教学改革措施。课内因材施教深入浅出地阐述基本原理,利用多媒体将自行开发的编译系统执行动态过程展示给学生,并提出学生课堂模式提高学生自主学习能力;课外根据课程教学大纲实际情况增加答疑环节并利用加分规则鼓励学生理论联系实际实现算法,从各个方面帮助学生加强对编译原理的理解。
关键词:因材施教;理论联系实际;学生课堂;加分规则
一、相关工作
每年都有很多授课老师不断研究创新,寻求更好的教学模式,让更多的学生通过《编译原理》这门课程了解整个计算机体系构架。在任务驱动的教学方法基础之上,理论教学与实验教学相结合,并探索出实验教学的考核办法。(孙士保)首先明确学生学习本课程的基本要求,然后用实验贯穿整个教学过程,合理组织教学内容,并引入多种现代化教学手段和方法开展教学工作。(王春玲等)从五个方面分析教学改革的原因以及采取的相应措施,注重实验实践的同时还强调了教学方法要得当,并创建了《编译原理》课程网站,促进与学生的交流。(孟亚辉)采用小班化教学模式,将每个班分成若干实验小组,实验成绩占课程成绩的60%,依据目标驱动思想,提出基于分层或图的《编译原理》课程实施目标体系。(田玲等)
二、编译过程
在计算机上执行高级语言程序一般要分成两个步骤:(1)用编译程序把高级语言翻译成机器语言程序;(2)运行所得到的机器语言程序求得计算结果。步骤(1)即为编译过程,用于把某种语言程序(称为源程序)翻译成为另一种语言程序(称为目标程序),且后者与前者在逻辑上等价。其中编译程序又可细分为六个过程,教学工作主要围绕这六个过程展开。
编译程序
三、教改实施
教改即教学、教材、教法和教育的改革。而此处的教改,主要指的是前三者。它是应素质教育而提出的,是中国传统教育体制已不适应现代化教育的必然结果。《编译原理》课程的教学改革,主要围绕课内、课外两方面同步实施。
(一)课内
《编译原理》这门课程是南京邮电大学通达学院计算机专业学生开设的一门必修课。随着高校扩招,学生人数每年都在增加,为了达到预期教学效果,保证教学质量,授课老师肩上的担子越来越沉重,各方面的压力也越来越大。授课教师就如何教好这门课都在不断地研究和探索。作者根据这几年的教学实践所得,总结出以下课内教改经验和方法。
规则①表示当且仅当文法G中含有形如P->…ab…或P->…aQb…的产生式,则运算符a、b优先级相等。如数学中的运算符“(”和“)”。
规则②表示当且仅当文法G中含有形如P->…aR…的产生式,且R->…b…或R->…Qb…,则运算符a的优先级低于运算符b。
规则③表示当且仅当文法G中含有形如P->…Rb…的产生式,且R->…a…或R->…aQ…,则运算符a的优先级高于运算符b。
对于上述拗口又繁琐的定义,学生只能死记硬背,尤其是规则②和③很容易搞混。通过多次教学尝试,提出了“将军后出现原则”。学生无需记忆规则的定义,只需牢记后出现的运算符优先级肯定高于先出现的,因为“将军”的级别比较高,一般都在后方坐镇指挥,不会出现在前方。换言之,规则②中运算符a在第一个产生式中先出现,它的优先级就比第二个产生式中后出现的b低;反之亦然。这样的阐述能够帮助学生立刻理解并记忆,教学效率也得到了提高。
2.理论联系实际。随着计算机网络的发展,现代化教育理念的普及,现在很多大学的教学环境都得到提升,多媒体教学模式已经进入课堂,授课老师可以借助多媒体辅助教学。但是由于这门课程的特殊性以及多媒体的局限性,那些复杂算法的过程描述仅仅通过静态的板书或者动态的多媒体演示仍然不能以全貌展现给学生。为了让学生有直观的印象,作者查阅参考资料,并自行开发编译程序。在课上通过分步执行,让学生不仅能够全面理解算法,还能向他们演示程序,让学生了解如何通过高级语言缩短算法与实现之间的距离,激发学生课后自己动手编程实践的兴趣。
3.学生课堂。对于内容相对简单的章节,如果授课老师仍然在讲台上一味地讲解,学生很容易自满走神,从而遗漏重要细节。针对上述情况,作者尝试一种新式的授课方法,让学生当老师。如,在讲到代码优化章节,代码基本块划分及优化算法相对简单易懂,因此提前1~2周,预先通过自荐或者推荐方式推选出讲课的学生,然后该学生准备约1课时的内容向其他同学作汇报。届时其他学生也可以一同参与讨论。这种让学生自主学习,基于自己的理解将知识传输给他人的学生课堂教学模式,不仅能锻炼学生的学习能力,还能提升他们的自信心。
(二)课外
南京邮电大学通达学院开设的《编译原理》课程原课时为48课时,每周三节理论课。但实践方能见真知,学生如果只是掌握了编译的原理,而没有实践历练,遇到新的知识很快就会把先前的知识抛于脑后。为了能在课外和学生继续互动,发掘学生的潜力,作者自发组织学生开展以下课外教改活动。
1.课后答疑。每个章节授课结束之后,授课老师都会布置作业。但由于课时原因,不能在课内对题目做讲解。而网上答疑无法做到实时沟通,所以有些复杂的问题一时无法讲述清楚。经学校教务处批准,由授课老师自主安排每周1~2节课时间答疑,主要回答学生课上问题及课后作业,得到了学生的积极响应。这种有针对性的一对一的交流,使得学生学习的主动性、作业情况和考试成绩都均有不同程度的提高。并且在与学生的交流中能得到很多反馈信息,这些信息可以帮助授课老师根据学生的实际情况更合理地开展教学工作,达到良性循环。
2.加分规则,提拔优秀学生。利用高级程序设计实现算法不仅可以让学生进一步理解原理,同时也能锻炼他们的编程能力。作者在课后除布置常规作业之外,还提出加分规则鼓励学生动手实现课上讲述的算法,即利用任意高级语言实现算法。验收后在总评分上予以加分。如让学生依据递归下降算法实现图中语法分析模块,要求运行时输入一组左递归文法,输出First集、Follow集、预测分析表并且得出分析结果。有部分学习能力强的优秀学生能够积极参与,还曾经出现过总评分超出过100分的情况。此外利用课间休息将学生完成的程序演示给其他学生,带动其他学生的实践积极性,鼓励更多的学生投身到编程实践中。
四、结束语
《编译原理》课程教学改革需要因材施教,根据学校和学生的实际情况开展教学活动,注重提高学生的学习积极性。从互动性、因材施教、理论联系实际三方面着手,不仅让学生在课内学习理论知识、开展学生课堂,提高学习质量,还在课外多加交流,用鼓励式的加分规则让学生的学生生活更加充实。
参考文献:
[1]孙士保.“编译原理”课程教学方法研究与探索[J].中国电力教育,2012(01).
[2]王春玲,王纪川,薛纪文.编译原理教学改革研究[J].实验研究与探索,2007(12).
[3]孟亚辉.关于《编译原理》课程教学的思考[J].科技信息:科学教研,2008(16).
[4]田玲,余盛季,王晓斌,等.《编译原理》实验教学改革及探索[J].实验科学与技术,2013(06).
基金项目:本文系南京邮电大学2010年度教学改革研究项目(项目编号:8014045)的研究成果。
作者简介:王波,男,1980年7月出生,博士,南京邮电大学,研究方向:计算机图形。