编译原理课程设计与教学改革
本文关键词:编译原理课程设计,由笔耕文化传播整理发布。
【摘要】本文探讨了目前国内很多高校《编译原理》课程设计过程中存在的问题,根据从问题中学习的思想,理论指导实践的方法,提出了以实际项目为依托的“岗位导向,校企合作”的课程设计方式,并给出了切实可行的实施方案,实现“教、学、做”一体化,提高学生的学习兴趣,提高课程设计环节的教学效果。
【关键词】编译器;词法分析;语法分析
1课程设计过程现状分析
编译技术是计算机科学中发展最迅速,最成熟的一个分支,集中体现了计算机的成果与精华。但是编译程序的设计与实现过程涉及其他很多相关课程,例如《数据结构》、《算法分析与设计》、《C++语言程序设计》和《操作系统》等,目前国内外各高校对编译器的设计仅限于简单文法的编译程序设计,相当一部分同学对此都感到难度很大,编译程序课程设计的积极性不高[1],另外课程设计课时的限制,只能分模块进行,无法保证学生独立完成编译程序的整体设计与实现,导致学生们对编译程序的理解也只是粗枝大叶,对局部断章取义,不能整体理解,失去了实践的真实意义。表现为:(1)内容的设置缺乏连续性;(2)忽视学生实践能力的差异,内容固定单一;(3)忽视编译方法和技术与实际应用结合。编译程序是一种翻译程序,翻译的过程实际上也是在解决一个现实问题的过程,集中体现了人们的计算思维能力,在以后从事计算机专业的工作中,这种解决问题的方法和思路会反复用到[1]。企业中的软件设计也会用到编译理论的许多想法和技术,如有穷状态技术用于文本编辑程序、情报检索、模式识别;上下文无关文法、语法制导翻译用于建立多种文本处理程序;代码优化技术用于程序校验,由非结构化到结构化的程序转换等,而这些技术同样在学生的就业、创业过程中都会用到。在计算机专业所有课程中只有编译原理这门课最能锻炼学生的计算思维,而这种能力的获得不是通过上好编译原理课程,短时间的简单的编译程序,需要在课程设计过程中的大量的摸索和思考来实现。为了提高计算机专业学生的高薪就业率就非常有必要强调《编译原理》课程设计[2]。
2解决思路
为了帮助学生掌握编译原理的理论知识,激发学生学习编译原理的兴趣,深入理解编译技术,对课程设计环节进行了大胆改革,采用“岗位导向,校企合作”基于OBE(以产出为导向)的《编译原理》课程设计模式,目的是将理论课程中所介绍的词法分析及语法分析等算法设计思想能和具体应用结合起来,以激发学生的主动性和创造性,培养学生的创新能力和解决实际问题的能力[3],课程设计内容是把编译技术应用在具体的企业项目中,解决企业中出现的编译方面的问题,如基于有限自动机理论的饮料自动售货机系统的设计、基于有限自动机原理的汉语词汇的分割、轮胎成型机计算机监控系统设计[3]。这些课程设计内容能帮助学生更好地理解形式语言和自动机理论、编译程序的编写等,从具体问题的分析、设计以及编码实现的整个编译器的设计过程能慢慢学生的专业素养[3]。为将来计算机领域的就业、创业打好基础。(1)采用“岗位导向,校企合作”课程设计模式,强化技术应用特色,注重素质能力培养,注重技术应用于实践能力培养,强化工程化训练和能力培养。(2)以“项目带动实践,以实践带动教学”来重新整合构建课程教学体系,,将实践中用到的最新技术、新方法及研究成果融入教学中,构建理论与实践一体化的开放式教学模式。(3)提高学生的“竞争意识,团队意识”。考核采用分组考核,分阶段考核,并对考核结果进行记录,作为汇总考核的参考,加大素质和实际应用能力考核力度。(4)培养学生的“计算思维”,编译技术中的从高级语言转换为低级语言的过程是求解具体问题的过程,集中体现了计算思维[1]。
3课程设计内容组织
通过调研多家企业,了解企业岗位需求,根据企业岗位要求确定本课程内容相关的知识目标、技能目标、素质目标,形成理论教学与实践教学任务。以工程项目为任务驱动,以岗位真实的工作任务要求为背景,设计课程设计内容。引导学生利用所学的词法分析、语法分析知识等去解决实际问题。这就要求学生能够针对C等高级程序语言设计并开发出可用的编译程序。在设计编译器这么一个庞大而复杂的系统程序,应该遵循软件工程的思想,按照分析、设计、编程实现、测试和维护等开发过程才能保证开发出来的编译程序的质量[2]。根据系统功能进行模块划分,对学生进行分组,根据自己的爱好,可以选择系统分析、算法分析、数据结构、编码设计、报告撰写为自己的课程设计重点,同时通过组内互相交流,补充自己其他方面的知识,加强对编译器的总体把握,以及科技表达能力的培养。
4具体实施
“以企业实际项目为依托,教师为主导,学生为主体”,体现学生主动参与、协同合作、探索创新的教学模式。通过项目研发,实现“教、学、做”一体化。强调项目任务真实性、教师指导的目标及过程的指引性、学生学习的积极主动性、实践过程的探究性和合作性、评价的过程性和反思性等。具体实施7个步骤:(1)选题分组。先由教师提出实训目标、要求、步骤和项目选题,分组一般以4~5人为一个小组,根据学生的特点,可供选择的任务为编译程序词法分析、编译程序语法分析、语义分析和中间代码生成、代码优化和目标代码生成为自己的课程设计重点,组内人员定期交流,相互之间可以查漏补缺,从而总体把握编译器设计实现过程[4]。(2)制定计划并进行可行性分析。学生明确选题项目目标、任务和计划,完成计划书,教师对学生的计划进行可行性分析。(3)需求分析:教师带领学生到企业做实际调研,结合应用领域知识的了解,了解编译部分的工作需求。(4)设计:根据具体题目做好编译部分的工作,对源语言语言进行词法分析、语法分析、语义分析、生成中间代码、代码优化、最终生成目标代码[5],编译过程如图1所示。(5)按照任务时间节点考核和最后的汇报考核相结合的考核办法,根据不同的题目难度给定相应的权重,采用加权形式。在每个任务时间节点要进行考核,是否完成相应节点规定的任务,并给出进一步努力的方向,完成情况进行记录。汇报考核时,以小组为单位进行公开答辩,讲解分析过程、设计过程,对功能进行演示,回答其他小组及指导教师的问题[2]。(6)项目实施。根据设计内容进行编程实现,指导教师提供适时启发和引导,定时进行小组讨论,发现问题寻找解决方法和思路。(7)总结评价与体会。根据项目交流的情况写出项目体会,指导教师根据小组项目体会进行总结,并对提交的文挡和作品进行评价形成总结性评价报告。
5结语
开展“以企业实际项目为依托,教师为主导,学生为主体”的编译原理课程设计教学活动后,学生的编程能力有了很大的提高,分析问题及解决问题的能力也有了质的飞跃,期末编译考试平均成绩接近80分[2],学生普遍认为,结合工程项目的题目科学合理,以小组为单位进行课程设计使同学各尽所能,增强了学生的自信心、学习的主动性和积极性。《编译原理》学习兴趣将进一步会带动了计算思维能力的提高,计算思维能力的提高促进了创新性成果的产生,形成了很好的良性循环[2]。
参考文献:
[1]柴艳妹,马燕林.编译原理课程教学改革研究[J].计算机教育,2011(20):36~39.
[2]张晶,金英,刘磊.“编译原理”实践课程教学方法研究[J].计算机教育,2009(21):19~21.
[3]金永霞,丁海军.《编译原理》实验的层次化设计[J].现代计算机(专业版),2012(8):28~30.
[4]王改芳,龚君芳,李圣文,张冬梅.编译原理课程实践教学改革探索[J].实验技术与管理,2009(21):130~131.
[5]张冬茉,方习文.编译原理课程设计的教学实践与改革[J].实验室研究与探索,2012(11):134~137.
作者:徐艳群 张斌 单位:南阳理工学院计算机与信息工程学院
本文关键词:编译原理课程设计,由笔耕文化传播整理发布。
本文编号:342819
本文链接:https://www.wllwen.com/wenshubaike/kcsz/342819.html