编译原理 - 谭添¶
基本信息¶
- 课程号:
22020260 - 任课教师: 谭添
- 上课专业: 匡计,计拔
课程评价¶
评价 1¶
评价者信息¶
Tag:保研;Rank 10%;2025 Spring修课
Score:98
关于老师¶
由 PASCAL 组 的谭添老师授课。老师授课上很认真且清晰,也会结合实践(老师自己用 JAVA 写的一个编译器)来帮助学生理解抽象的理论概念。
前置知识¶
C 语言编程,上过软件分析课的话会轻松很多(因为涉及到静态分析进行优化等)。
课程内容¶
龙书(Compilers: Principles,Techniques,and Tools)的前八章内容,相当传统的选择,无数国内外大学都在开设这样的编译原理课程。
一定要求用 C 语言搓的编译器是这个课最大的特色... 另外本班为拔尖班,需要完成所有选做内容。
作业、考试与得分¶
书面作业较为简单,主要为龙书的课后习题。
实验部分要用 C 写一个编译器,五个实验分别为词法语法分析、类型检查、中间代码生成、机器代码(MIPS)生成、优化。实验允许 1~3 人组队,并对最终分数有一定的系数乘积: - 一人: 110% - 二人:队长 105%,队员 100% - 三人:90%
自己编程能力较好的同学推荐自己一个人做,容错率会高(因为实验五的优化非常恶心,几个选做全部做完花的时间太多了,而且实现很麻烦)。
期末考试比较基础,对往年卷做 Finetune 即可。
| 书面作业 | 实验 | 期末考试 |
|---|---|---|
| 10% | 30% | 60% |
其中实验按时提交即得 20%,提交"合理"(应该是能过样例的意思)再 20%,"正确"则是剩下 60%。
工作量¶
单人实验的话,前四次实验每次约 10h。第五次很麻烦,可能需要约 20+h。
书面作业很简单,每次一小时内做完,一共约 7~8 次。
学习指南¶
阅读龙书即可。对实验五的一些复杂的优化,可以搜索国外的一些课程的实现方式(LICM 和强度削减)。笔者当时在最后一个实验时花了很多时间。
其他¶
和老师聊过为啥这实验一定要用 C 写... 可能是因为历史惯性吧 (X)
如果能用 C++/Rust 写的话会轻松不少。
如何贡献¶
请查看评价指南了解如何评价课程!