编译系统是计算机系统中最重要的系统软件之一,也往往是计算机相关专业学生在课堂学习过程中接触到的第一个完整的软件系统。编译系统完成的语言翻译任务,会影响成千上万个软件的正确性;其相关的模型、理论和算法也可应用于一般的软件设计和开发中,对学生了解和掌握高级程序设计语言原理、编译相关技术有着不可替代的作用。
北京航空航天大学张莉教授团队精心设计制作的编译技术实验课,根据编译理论知识学习路线设计了循序渐进式、全过程可自动化评测、挑战多元化的实验课程,将培养学生具备完整小型编译系统的设计、实现和测试的能力作为核心培养目标之一。该课程可以在减轻教师与助教教学压力的同时,帮助学生巩固编译原理各知识点,并让学生体会到从零开始实现一个完整编译系统的成就感,从而激发学生创造力和探索能力。
本实践课程由北京航空航天大学张莉教授、史晓华教授、胡春明教授、杨海燕讲师、蒋竞副教授、邵兵副教授、葛宁副教授、刘芳助理教授联合希冀平台组织建设,该团队目前已有二十余年编译技术课程的教学经验。实验课内容主要由6个部分组成:文法解读,词法分析,语法分析,错误处理,代码生成,代码优化。
循序渐进:根据课程目标,进阶式地组织课程内容,将构建一个编译系统的过程庖丁解牛般地划分为几个核心步骤,在每一步里都注重对学生的过程培养、过程考核,从而渐进式地培养学生相关方面的能力,及时地发现学生在学习中存在的问题。
成果评判全自动化:实践过程中的每个阶段都有可自动评判的实验教学方案,并基于希冀平台的在线实验环境与自动评测系统,学生可随时随地开展课程实践并能及时获取实践结果反馈,有利于激励学生完成整个项目,同时为授课老师、助教实现精细化过程管理和辅导提供有力支持。
挑战多元化:课程设计了PCODE和MIPS汇编两种不同难度的目标代码、不同的中间代码要求和代码优化要求,在构建一个完整编译系统目标不变的前提下,让学生可以根据自己的理论知识掌握状况和动手能力情况自行选择相应的挑战,进而让学生们既能感受到构造一个完整编译器的获得感,又不至于因为难度太大而放弃或者抄袭。
北京航空航天大学的编译技术一课于2004年被评为北京市精品课程;2008年被评为微软教育部精品课程、国家精品课程;2013年被评为国家级精品资源共享课;2018年开始在编译实验课程中引入竞速排名(国内首次);2019年与希冀技术团队合作建成支持编译全过程自动化评测的教学实验平台(国内首个);2020年被评为首批国家级一流本科课程。
文法解读
目标和要求:根据具体文法理解课堂教学内容,考核学生对文法基础知识的掌握情况,培养学生编写符合文法规则的测试程序的能力。
词法分析
目标和要求:根据具体文法编写词法分析程序,考核学生对词法分析方法的掌握情况,培养学生编写符合词法规则的词法分析程序的能力。
语法分析
目标和要求:根据具体文法编写语法分析程序,考核学生对语法分析方法的掌握情况,培养学生编写符合文法的自顶向下语法分析程序的能力。
错误处理
目标和要求:针对常见的错误分类编写错误处理程序,考核学生对错误处理方法的掌握情况,培养学生编写错误处理程序的能力。
代码生成
目标和要求:根据具体文法生成指定代码的目标程序,考核学生对语义分析及代码生成方法的掌握情况,培养学生针对给定文法和语义生成指定目标代码的能力。
代码优化
目标和要求:在编译器产生的中间代码基础上完成几种优化算法。考核学生对代码优化算法的掌握情况,培养学生开发具有代码优化功能的编译器的能力。
理论学习与实践作业参照:
循序渐进式分层次实践作业安排: