编译原理是高等工科院校面向计算机相关专业大三学生开设的专业核心必修课。所含内容既有便于抽象的问题,也有较成熟的理论,涉及学科抽象、理论、设计三个形态。课程使用形式化的巴科斯范式描述程序设计语言,涉及的概念多,算法抽象,不易理解;同时,本课程注重计算思维的培养,强调理论指导下的工程实践。
通过学习该课程,使学生了解形式语言基本概念和术语,掌握词法分析、语法分析和语义分析与中间代码生成技术的基本原理和实现方法。通过将“抽象、自动化、形式化、转化、约简、递归、嵌入、分解、仿真和容错”等计算思维与“形式语言基本理论、词法分析、语法分析、和语义分析与中间代码生成”等内容进行对应,帮助学生更好地从计算思维的角度去理解和分析编译的理论和技术。
通过学习编译程序的构造原理和技术,不仅有助于深刻理解和正确使用程序设计语言,更可以培养计算机学科乃至其他学科解决问题的思维和方法(即如何形式化地描述问题,以及如何通过演绎和归纳来设计解决方案)。这些思维和方法对于应用软件、系统软件以及人工智能的设计与开发具有重要的启示意义,为从事计算机相关行业打下基本的理论和工程实践基础。
本课程具有思想素质、知识技能以及能力培养三个层面的通用课程目标:
(一)思想、素质教育目标
目标1.1 在教学过程中,激发学生自豪感与爱国情怀,鼓励学生通过努力学习掌握先进科学技术,服务国家,回馈社会。
目标1.2 在教学过程中,通过课程内容与中国传统文化思想相结合,提升学生的学习兴趣、人文关怀和道德情操,真正做到“传道、授业和解惑”。
(二)知识教学目标
目标2.1 使学生理解编译系统的工作流程和编译器各功能模块的设计原理,能够利用基本原理和方法识别和分析计算机软件开发领域复杂工程问题。
目标2.2 使学生掌握词法分析器、语法分析器开发方法,能够编写词法分析程序和语法分析程序。
(三)能力教学目标
目标3.1使学生理解编译系统的工作流程和编译器各功能模块的设计原理,培养学生抽象思维和逻辑思维能力,能够利用基本原理和方法识别和分析计算机软件开发领域复杂工程问题的特征。
目标3.2 使学生掌握设计、编制、分析和维护编译程序的方法和技术,能够应用这些基本方法和技术分析和解决软件开发中的实际问题,使学生具有系统能力,能站在系统的全局去看问题、分析问题和解决问题。
目标3.3使学生掌握词法分析器、语法分析器开发方法,学习构造编译器的各种工具的使用方法,培养学生软件开发能力,具备开发系统软件的能力。
与本课程关系最为密切的是《高级语言程序设计》,高级语言程序设计侧重于程序设计和软件开发,本课程重点是阐述高级语言程序开发工具中的编译系统的工作原理。在课程的算法讲授中会运用到《离散数学》和《数据结构A》等课程相关知识点。
本学期的线上成绩由四部分组成,单元测验+单元作业+线上期末考试+线上讨论,其比例分别是40%、20%、30%和10%
教材:黄海平,蒋凌云,沙超,徐康. 北京:人民邮电出版社,2022
参考资料:
[1] Terence Parr.编程语言实现模式.武汉:华中科技大学出版社,2013.
[2] Alfred V. Aho.编译原理.北京:机械工业出版社,2009
[3] 蒋宗礼, 姜守旭. 编译原理. 北京: 高等教育出版社, 2017