当前位置:首页 期刊杂志

基于工程教育专业认证的《编译原理》课程改革

时间:2024-05-04

孙守卿

摘要:针对工程教育专认证中关于“复杂工程问题”的培养要求,对计算机类专业的基础核心课程《编译原理》的课程标准、教学内容及实验实践内容、教学模式、考核形式等进行了相应的改革。通过改革,使得学生的理论知识掌握更加扎实,培养了学生解决复杂工程问题能力。

关键词:工程教育认证;复杂工程问题;产出导向;持续改进

中图分类号:G642 文献标识码:A

文章编号:1009-3044(2019129-0104-03

2016年6月2日,我国正式加人《華盛顿协议》,这是中国高等教育具有里程碑意义的事情。《华盛顿协议》(Washing-ton Accord,WA)是以培养专业工程师为主要目标的本科工程学位国际工程师互认协议。“以学生为中心”“产出导向(OBE)”“持续改进”是其核心理念。根据协议,我国《工程教育专业认证标准》给出12条毕业时必须达到能力标准。在计算机专业课程支撑毕业要求指标点课程矩阵中,《编译原理》课程需要支撑指标点1-3、指标点2.3,指标点4.1。为了使课程能够很好地支撑毕业要求,需要对该课程从课程标准到教学模式、考核方式等方面进行改革。

1修订课程标准

2014级之前的课程标准不具有针对性,考核内容中对实践的难度和复杂程度不高。这样导致学生对理论知识的认识和理解程度不深,很多学生学完了《编译原理》之后,对编译原理的认识还停留在有限自动机、算符优先语法分析等比较初级、片面的知识点上。学生不仅不会写编译程序,更不会运用形式化的理论对复杂问题进行抽象建模及解决复杂工程问题。

为了能更好地满足专业认证对学生素质的培养要求,完成课程支撑的毕业要求指标点,对《编译原理》课程标准做了如下修改:

1)掌握程序设计语言语法描述、编译程序的词法分析、语法分析、语法制导翻译和中间代码生成、代码优化、目标代码生成等基本知识。通过本课程的学习,使学生掌握计算机专业知识并能对计算机软硬件系统的设计方案和模型进行推理和验证。(支持毕业要求1.3)

2)使学生掌握实现编译程序的具体编程技术;在进行一般程序设计时,知道怎样写出安全、可靠、高效的代码。培养学生能够应用专业知识进行问题分析,通过实验、推理等方法,验证解决方案的合理性,得到有效结论。(支持毕业要求2.3)

3)加深学生对程序设计语言的理解,培养学生设计、分析和实现中大型软件的初步能力,从而培养学生能够针对计算机复杂工程问题的关键因素,基于科学原理制定实验目标和方法,设计实验方案,进一步提升学生的计算机专业素养。

通过对课程标准的修订,使得课程的教学内容更加精炼,教学内容不再是单纯的讲授知识原理,而是侧重对学生计算思维的训练,进而培养学生解决复杂问题的能力。

2利用网络教学平台进行教学模式的改革

工程教育专业认证要求大学教育“以学生为中心”和“产出导向”,因此,原有的封闭式的、以教师为中心的、单纯依靠PPT+书本进行知识讲授的教学模式已经不足以满足教学需要。在《编译原理》授课过程中,采用混合式教学模式,充分发挥网络教学平台的优势,从教学活动的组织、学生的管理、课程学习资源的共享等各方面对《编译原理》课程进行了更全面的课程信息化建设。

1)使用导学清单,组织学生预习

针对编译原理课程难度大,知识概念多,内容抽象,算法复杂等特点。在课程讲授之前,教师根据课程内容制定导学清单供学生预习。本课程对语言及文法、词法分析、语法分析树等抽象性高的知识点分别制定了导学清单,通过导学清单,学生可以通过对课程资料的准备、提前阅读对课程的内容有了一个初步的了解,同时也对未知的知识有了探究的兴趣。如:通过语言及文法导学清单中的问题,以学生熟知的英语、汉语等自然语言为例,将字母、汉字、单词与C程序设计语言中的关键词、标识符、if语句联系在一起,启发学生思考,引导学生把抽象的形式语言中的文法和自然语言中的语法进行对比、联想,激发学生对课程学习的积极性。

2)丰富课程学习资源

通过进一步丰富课程资源,使课程的学习资源多样化、系统化。拓宽学生自主学习的渠道。在课程资源里,除了有来自斯坦福大学计算机科学系的编译原理课程视频资料,也有来自国防科技大学的经典慕课资源。同时,也有课程组老师自己录制的课程资源。针对一些难度大的算法,还有专门录制的长度为5-10分钟的微课视频。

通过课件、微视频、在线课程等多种形式的课程内容呈现,学生可以课下,根据自身情况自主复习、重点难点知识。

网络教学平台的使用提高了学生自主学习的能力,使得对课程的学习更加灵活、自主。

3)组织学生翻转课堂

改变过去授课过程中,教师对所有的知识点一讲到底、面面俱到的教学模式。对算符优先分析、LALR(1)分析算法等进阶性的知识点,采用教师指导、学生分组讨论学习的方式进行。通过已有的知识作为载体,培养学生自己根据形式化的文法构建有限自动机模型,实现相应的算法。

4)活跃在线答疑讨论区

在线答疑讨论区使得师生之间的互动和讨论延续到课下。使得传统课堂的单向知识流动变为师生之间的双向流动,在课堂的答疑讨论区,学生分别把自己对课程的疑问,学习中出现的错误进行分享讨论,课堂的开放程度得到了扩大。

通过教师及时回复学生自主学习中的问题,保证了学生能够按时完成自主学习任务。在知识反馈过程中,教师也可以及时收集到学生知识的困惑区,在课堂上有针对性的讲解。课堂进入良性循环。

5)在线测试巩固知识

在学期中,对课程的每个章节分别组织在线测试和随堂测试,完成对课程知识点的阶段性巩固。如,对于非确定性自动机的确定化算法、确定性有限自动机的化简算法进行强化考核。通过时间为10-15分钟的小测形式,学生及时发现学习的不足,增强学习的动力。

3ACM在线测试平台进行实验测试

原有的编译课程实验基本上都上验证性实验。学生只是简单完成算法的编写,并未理解不同的语法分析算法之间的性能区别等。通过ACM进行实验,将《编译原理》课程的实验根据课程进度进行了有层次的安排,实验项目之间难度由浅入深,只有学生掌握了词法分析,才可以进行语法分析算法的实现,进而编写语义分析和中间代码生成的实验,通过ACM平台,学生可以直接得到实验结果,看见代码体积,程序运行时间、耗费内存等算法效率的分析数据。可以对不同的算法实现的优劣性进行直观的比较和分析,加深对算法的理解。

通过将编译程序分解成若干子程序、子问题。学生在这个过程中逐步掌握了复杂问题的分解能力,提高了解决复杂问题的能力。

4项目考核——小C语言编译器的设计

根据工程教育专业认证产出导向的教育理念,从培养学生解决分析复杂工程问题的能力这个教学目标出发,在课程考核过程中添加了小c语言编译器设计这个环节。

小C程序抽取了C语言部分有代表性的语法,要求学生以小组为单位,从软件工程的角度出发,分阶段完成以下任务:

(1)进行需求分析:从全局性出发,对项目应实现的功能及技术可行性进行分析;

(2)采用形式语言建模:用正规文法及上下文无关文法描述小C语言的词法及语法;

(3)独立完成一个小型C语言编译器(要求至少包含词法分析、语法分析、语义分析及中间代码生成功能);

(4)測试;完成功能测试及性能测试分析;

(5)文档书写整理:格式规范;

(61项目答辩;学生需对整个项目的情况进行陈述,如:团队内任务的分工、贡献度、项目的创新点,具体的技术实现等。

小C编译器的设计及实现具有一定的复杂性学生需要综合考虑很多系统性、全局性的问题。

在项目驱动下,学生集思广益,自发选出项目组长。并根据学习能力和个人意愿,分派和承担不同的任务。每个小组就像一个IT项目团队一样,每个人扮演不同的角色。学生们互帮互助,共同发挥各自的优点。在这个过程中,学生都能综合利用数据结构、操作系统、计算机硬件基础、软件工程等专业知识完成该项目。

5结果反馈

通过对16级计科卓越(01-04班)实施该改革,学生的成绩分布如表1,表2所示:

根据学生的在线测试、ACM实验成绩、分组小c语言的编译器设计成绩的毕业要求指标点达成度情况如表4所示。

通过对学生成绩分析可以看出,《编译原理》课程对工程教育专业认证要求支撑的指标点达成度较好。但是,对于指标点2-3的达成度低于其他两项。这个主要反映在学生分组完成小C语言编译器设计时,对于目标代码生成及寄存器分配这个功能,很多小组完成度不够好。很多学生反馈说由于对计算机体系结构不够了解,对汇编语言掌握程度不熟练,所以,尽管学生了解了寄存器的分配算法,但是还是不能很好地完成该设计。

6总结与改进

根据工程教育认证的“持续改进”的理念,根据学生的成绩反馈,在《编译原理》课程的后续改革中,我们将继续加强对学生工程实践能力的训练,使得学生不仅能很好地掌握编译的原理,更能掌握编译的技术,从而满足行业对人才的要求。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!