跳转至

编译原理 - 谭添

基本信息

  • 课程号: 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 写的话会轻松不少。

如何贡献

请查看评价指南了解如何评价课程!

评论