学校云 建设你的专属在线教育平台
中国大学MOOC
SPOC学校专有课程
编译技术(徐秀娟 2021年秋)
分享
spContent=“编译技术”作为软件工程专业的核心课程,旨在对介绍编译器构造的一般原理和基本实现方法。本课程强调对编译原理和技术的宏观理解。通过课程讲解,使学生掌握文法与语言、词法分析、语法分析、语义分析、优化与目标代码的生成等基础理论知识。
—— 课程团队
课程概述

各位同学,大家好:
感谢大家选择《编译技术》慕课课程,希望这门课程能够对大家有所帮助。

编译技术是计算机的核心技术之一。“编译技术”作为软件工程专业的核心课程,旨在对介绍编译器构造的一般原理和基本实现方法。本课程强调对编译原理和技术的宏观理解。通过课程讲解,使学生掌握文法与语言、词法分析、语法分析、语义分析、优化与目标代码的生成等基础理论知识。

授课目标

课程学习目标:

1、能够说出编译器的内涵与外延、以及对程序开发的作用

2、能够使用正规式、有限自动机进行词法分析,会使用子集构造法将NFA转换为DFA

3、能够使用自上而下的预测分析法和自下而上的移进归约分析法进行语法分析

4、运用S属性和L属性定义解决语义分析问题

5、能理解程序编译时和运行时的区别,理解运行时存储空间的组织与分配方法

6、能充分运用三地址代码、后缀表示、语法树解决中间代码生成问题

7、能够复述编译器的基本结构、编译器的基本工作原理

8、本课程列出了若干个讨论问题,由学生自己思考讨


成绩 要求

为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。

 

电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。

 

完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。

 

认证证书申请注意事项:

1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。

2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。


课程大纲
预备知识

已经修完程序设计、离散数学、数据结构、操作系统、等计算机基础课程。

最低知识:至少学过一门程序语言,并能够实现hello world程序的编写和运行。

如果学过Python、Java、CPP、C等任何一门语言,都对于本课程有更多帮助。

本课程的学习者,应具备以下先导知识

1. 程序语言设计:学习过相关课程,能独立编写200行以上代码的程序。本课程是支撑课程学习目标1-5的先导知识

2. 计算机组织与结构:学习过计算机组织与结构课程,了解计算机内部5大部件的工作原理。本课程是支撑课程学习目标4的先导知识

3. 操作系统原理:学习过操作系统原理课程,了解文件、目录、IPC等机制的基本原理;本课程是支撑课程学习目标5和6的先导知识

4. 数据结构与算法:学习过数据结构与算法课程,能熟练使用理解简单数据结构及算法解决问题;本课程是支撑课程学习目标5的先导知识


参考资料

本课程推荐教材及与课程学习目标对应关系如下:

1. 授课教材:《编译原理》 陈意云 张昱编著 高教育出版社   2016年第三版 ISBN:9787040404913。

(1)教材特点:该教材为陈意云和张昱老师编著,是该书第三版。是目前国内编译技术课程使用的主流教材。

(2)使用方法:本教材对应课程学习目标1-5,可以做到对课程内容的全覆盖,请同学们学习完视频之后,一定要详细阅读教材中的对应部分,并针对课后习题进行联系,能够有效提高学习质量;

2. 参考教材1:《编译原理》Alfred V.Aho等编著 机械工业出版社 2018年第二版 ISBN:9787111251217。

(1)教材特点:相比于授课教材受篇幅限制的问题,本教材内容更加详尽。《编译原理》抛弃诸如算符优先分析等过时技术,增加面向对象编译、类型检查等新技术。

*注:为方便国内本科学生学习,本书还有一本精简版的《编译原理》(本科教学版),推荐大家学习。

(2)使用方法:本教材对应课程学习目标5。建议将来有志于进行完整编译器软件设计和开发的同学通读本教材,并动手完成教材中的编译器开发案例;

3. 参考教材2:《现代编译原理 C语言描述》修订版(图灵出品) 人民邮电出版社 2018年第二版 ISBN:9787115476883。

(1)教材特点:按照编译器处理过程组织章节顺序,并精心设计了一个“学生项目编译器”,全面讲述现代编译器的结构、编译算法和实现方法。前端增加了面向对象的程序语言设计、函数式程序设计语言等现代语言的编译实现方法,后端增加了针对现代计算机体系结构特征的一些比较成熟的优化方法。

(2)使用方法:本教材对应课程学习目标5,建议对编译器设计更有兴趣的同学动手实现教材中的全部代码。


常见问题

Q :  本课程的教材是哪本呢?

A :  本课程选用高等教育出版社的教材。《编译原理》高教出版社,张煜 陈意云 主编。第四版。

Q :  本课程的课件可以提供吗?

A :  可以,在每个视频对应章节均提供了对应的课件,请大家学习。


Q :  学完本课程是否能自己写一个编译器呢?

A :  是的,如果都学完本课程,能够写一个小型语言的编译器。

Q :  哇,真的呀?

A :  嗯嗯,是真的,在本课程中第八章已经配备一个学生写的小型语言编译器SimpleJava,有详细的演示视频,供大家学习参考一下。

Q :  这一次开课有哪些新的变化呢?

A :  课程组教师已经制作好全部字幕,并进行了校对字幕,本次开课所有视频已经配备字幕,以方便大家的学习。此外还进一步丰富了课程习题,为每一章均配备了章节习题测试。


祝大家学习愉快!