李志敏 黄兰英 熊曾刚
摘要:为提高编译原理课程的教学效果,提出基于CDIO工程教育模式的课程教学方案,阐述编译原理“案例驱动、模仿提升、资源开放、协作学习”的教学方法,说明教学实施过程中面临的“双师型”教师队伍建设和学生实习实训平台建设等问题与对策。
关键词:编译原理:CDIO工程教育模式;课程教学;项目实训
引 言
当前,社会经济发展对计算机科学与技术专业人才的能力与素质要求总结起来主要有如下5个基本层面。
(1)具有扎实的专业基础知识和终生学习的素质
(2)具有工作经验和较强的工程应用能力。
(3)善于沟通协调,具有团队合作能力。
(4)具有较强的自学能力和实践创新能力。
(5)具备责任心强、认真负责、有担当、能吃苦耐劳等意志品质。
根据上述人才的市场需求,计算机科学与技术专业毕业生还存在不能满足市场人才需求的状况,反映在计算机专业的教学上,面临如下困局:课程与课程、教师与学生、学校与企业之问相对独立,缺少协作,没有形成人才培养的合力二要打破困局,必须明确课程教学是教学质量彤成的“第一现场”,也是影响人才培养质量的关键环节。改进课程教学方法是提高人才培养质量的必由之路 。
编译原理课程具有抽象模型复杂、概念繁多、算法多样、理论性强等特征。编译器设计是课程的难点之一,构造完整的编译器技术难度大,学生毕业后很少有人从事这方面的工作,这就造成很多学生课程学习目标不明确、不知道学什么、为什么学、怎么学的局面。此外,课时少、内容多、教学内容和方法不能适应编译技术发展的要求、学生课外主动学习的积极性不高,也是编译原理课程教学效果不佳的原因之一。
实际上,编译原理作为计算机科学与技术专业的重要专业课程,在计算机专业人才培养上有着极其重要的作用。通过该课程的学习,学生可以得到如下6个方面的训练 。
(1)掌握和理解编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,获得分析、设计、实现和维护编译系统的初步能力。
(2)程序设计语言、操作系统、计算机原理和体系结构等课程是编译原理的先修课程,编译原理课程的学习可以加深学生对这些先修课程的理解,提高知识的综合应用能力。
(3)提高对计算机软件和硬件系统的总体认识,具备建立抽象模型和编程实现能力。
(4)编译原理课程中的编译器架构设计、算法设计等内容,可以为毕业生今后从事相关专业的工作打下坚实基础。
(5)课程中的经典语言分析方法对于设计一些实用工具和软件,如自然语言理解、网络信息处理、网络协议的分析与实现等,都是必备的基础知识。
(6)构造编译器的实践过程是软件工程的成功案例,让学生获得开发大型应用软件的经验。
1 CDIO工程教育理念简介
CDIO 工程教育模式是能力本位的培养模式,其优势在于让学生以主动、团队合作、课程与课程之问有机联系的学习方式,获取与工程实践相关的知识与能力。CDIO培养大纲将工科毕业生的能力分为工程基础知识、个人能力、团队合作能力和T程系统能力4个层面,大纲要求以综合的培养方式使学生在这4个层面达到预定目标。只有把知识、能力、社会需求融合起来,以能力为导向,以学科知识和社会需要为依托,整合课程组织结构,才能培养出符合社会经济发展要求的工程技术人才。CDIO工程教育以实际应用项曰的开发过程为主线,提炼出项目开发经历的构思、设计、实施、运行4个主要环节,培养学生系统开发的能力 。实施CDIO工程教育模式,基本原则是落实“做中学”以及“基于项目的学习”,它体现了现代工程师所应具备的服务于现代工业产品从构思、设计、实现到运行的全过程所必须拥有的基本能力。
2 基于CDIO工程教育模式的编泽原理课程教学方法
课程教学改革从以下4个方面展开。
1)学生分组,导入项目。
课程教学以项目导入的方式开始,首先鼓励学生搜集编译基础理论和技术在计算机应用领域的成功案例;其次引导学生搜集开源的编译工具,按照支持的源语言和语法分析方法分类。以上两项前期工作对应CDIO模式的构思部分,需明确客户的需求,考虑技术、企业战略和制度等因素,不断改进概念、技术和商业计划。
项目的最终目标是用C语言编写一个PL/O语言处理系统。在教学过程中,学生分成若干个项目组,在教师的指导下编写项目计划书,划分项目的功能模块;指定各个模块的负责人,模拟实际项目开发,进行分工协作。
2)案例驱动,模仿提升。
CDIO工程教育模式要充分体现“做中学”,以“项目案例”为载体组织整个教学过程,以案例开发过程安排教学内容,灵活运川启发式和研究性的教学方法。课程教学要为学生构建项目开发的情景,调动学生的主动性与参与性,提高学生的实践创新能力。在编译原理课程教学过程中,我们发现有些学生学习缺乏积极性和主动性,课外缺少自主训练和探索,虽然通过了课程考核,但是实际只了解到一些基本概念和零碎的知识断点,不具备运用所学原理和技术进行编译器开发的能力。
为了培养学生“构思一设汁一实现一运作”编译系统的技能,我们将编泽原理的学习过程分为模仿和提升两个阶段。
(1)模仿阶段的主要目标是以PL/O语言处理系统为案例,引导学生学习基础知识,掌握基本算法,激发学生兴趣。项目开发分为8项子任务,这些任务可在教师的指导下完成 。
任务1:安装测试用C语言实现的PL/O语言处理系统;完成PL/O语言语法的EBNF描述。
任务2:PL/O编译程序中词法分析程序的设计和实现。
任务3:PL/O编译程序中语法分析程序的设计和实现;自顶向下递归调用子程序的方法。
任务4:PL/O编译程序中语义分析和巾间代码生成。
任务5:PL/O编译程序中符号表的设计与实现。
任务6:PL/O编译程序中运行时的存储组织。
任务7:PL/O编译程序中的目标代码生成。
任务8:PL/O编译程序各阶段整合运行,编写PL/O语言使用说明书。
教师可展示用C语言实现的案例,要求学生模仿整个实现过程,用Java语言再次实现PL/O语言处理系统。学生则通过此案例,模拟项目开发全过程。
(2)提升阶段的主要目标是让学生学习编译器开发的流程,学会运用编译技术进行项目开发。本阶段分为以下几个步骤。
步骤1:编译器程序设计提高。定义一个待实现的源语言,如PL/O语言的扩充或者C语言的一个子集,要求学生用C或者Java实现编译程序。
步骤2:编译技术扩展。引导学生学习面向对象语言编译技术,如收集整理开源编泽器GCC的资料,描述GCC的总体结构、编译流程、代码组织。
步骤3:编译器实用工具。引导学生学习嵌入式系统编译器及其工具的应用开发,包括C和Java编译器开发。
步骤4:项目实训。引导学生利用编译技术进行项目开发,如设计开发C语言程序设计自动评分系统、基于语法分析技术的企业名称识别算法、基于语义分析的数据驱动型漏洞检测方法、编译原理在通信协议转换中的应用、编译原理在反病毒技术中的研究和应用等。
3)开放资源,自主协作。
CDIO注重自主学习能力的培养,提升学生独立解决问题的能力,同时也重视团队协作精神的培养,发挥团队的力量,协同工作完成任务。
网络环境下的自主和协作学习要求教师提供充分的网络资源。在教学中,课程组搜集整理了国内外编译原理课程的教学资源,整理了各种实用编程语言及其表示规则,设计了适合学生需要的“做中学”项目和任务,并在课程的教学网络平台共享,通过开放资源和自主协作的学习,鼓励学生在课外通过网络和移动设备开展学习讨论,用课外学习弥补课程学时的不足;通过课外自学,充分发挥学生的主观能动性,锻炼学生“自主设计、自主实现、自由探索”,引导和鼓励学生积极组织并参与项目组的学习和研讨活动,让个人融人项目团队,提升整个团队的工程实践能力。
4)考核评价,多点多面。
CDIO注重工程实践能力的培养,工程实践能力是各种能力的综合体现,因此考核评价要兼顾这种特性。
所谓多点主要是指编译原理具有纷繁复杂的知识点,因此对知识点的考核应以促进学生主动学习、研究性学习为目的,注重对学习过程的考查。教师可通过查看学习记录、平时作业和练习情况,考核学生对基本知识点的掌握情况;通过小组活动记录,查看学生在项目组讨论中的活跃度,了解学生提出问题的数量和质量以及解决问题的思路,考核学生的知识整合和应用能力。
所谓多面主要是指编译原理课程在培养学生实践创新能力方面具有多面性,因此考核评价方式要有利于培养创新能力、实践技能、解决实际问题能力,从多个层面开展。教师可通过对项目构思与设计展示、子项目实施情况、项目汇报与答辩、学生的自评与互评、教师与企业工程师的评价等多种方式考核学生的专业知识、个人自身能力、团队合作能力、设计项目和开发系统能力。
3 CDIO模式编译原理教学实施过程中存在的问题与对策
1)“双师型”教师队伍的建设问题
目前,从事编译理论研究和技术开发的教师不多,有编译器开发经验的教师比较缺乏。编译原理课程“双师型”教师队伍奇缺。
湖北省教育厅和湖北工程学院制定政策,资助并鼓励青年教师进入相关企业与工程师合作解决实践中的技术难题。同时,湖北工程学院每年派出专业课青年教师到武汉大学、华中科技大学等高校进修深造。通过这两个途径,学校可以解决“双师型”师资队伍建设的问题。
2)学生实习实训平台的建设问题。
毕业生就业难和符合市场需求的应用性人才短缺问题一直是高校、用人单位和毕业生共同的困扰。学生综合能力是就业成败的关键因素,CDIO工程教育模式强化工程应用实习实训平台的建设,希望为解决这种困扰提供帮助。
湖北工程学院与中国航天三江集团公司合作共建的工程实践教育中心和湖北工程学院国家级大学生创新创业训练计划项目已获得教育部批准。在此基础上,计算机学院已经与国内10余家IT企业和科研机构合作共建实习实训基地,校企合作层面深化,操作方案细化,实现与行业需求的无缝对接。
4 结语
基于CDIO工程教育理念的编译原理课程教学方案的改革,推动了算法与程序设计课程群、操作系统、计算机组成原理、软件工程实践等计算机类专业核心课程的建设,大幅度提高学生的创新实践能力。2014年,湖北工程学院毕业生就业率超过95%,考研录取率超过20%;非毕业班学生在各类软件设计大赛中获得湖北赛区一等奖10项,全国总决赛奖项10项。