编译原理

(刘烨庞)CS3232024秋 2023秋 2022秋 2021秋 2020秋 2019秋  
2024秋 2023秋 2022秋 2021秋 2020秋 2019秋
9.7(3人评价)
  • 课程难度
    中等
  • 作业多少
    中等
  • 给分好坏
    一般
  • 收获大小
    很多
选课类别:专业任务 教学语言:英文
课程类别:专业选修课 开课单位:计算机科学与工程系
课程层次:未知 获得学分:3.0
课程主页:暂无(如果你知道,请点右上角“编辑课程信息”添加!)
课程简介(教工部数据)
本课程介绍计算机编程语言的基本原理与编译器设计的理论基础。课程将会介绍编译器的各个组成部分,内容主要包括词法分析、语法分析、语义分析、中间代码生成、运行时刻环境、代码生成以及机器无关优化等。本课程还将通过实验使学生了解如何设计并且实现一个简单语言的编译器。 


This course introduces the basic principles of programming languages and theories of compiler construction. It aims to help students understand the architecture of a modern compiler and will cover topics including lexical analysis, syntax analysis, semantic analysis, intermediate-code generation, run-time environments, code generation and machine-independent optimizations. We will design experiments to provide students hands-on experience of constructing a compiler for a simple language.
点评写点评
排序学期
评分评分3条点评
user avatar   咕桃     2023秋
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:很多

省流:计系毋庸置疑的好课!

课程

课程大纲一目了然逻辑清晰,上一学期下来感觉结构很通透(虽然一学期肯定是不足以学透编译原理的),完整讲述了编译器的各个部分是如何将高级语言源码编译成机器码的过程,是听着很舒服的全英文,课程节奏也不算很快,课程内容的设置感觉比计组/OS会少一些,属于是刚好可以完整消化的程度,本人认为容量、难度、节奏设置最合理的计系课之一(还是加个之一比较客观),教材是龙书,具体内容可以看文末的第一节introduction课件了解。

理论和实验课的讲授都是刘老师负责,都讲得很清楚,再吹可能有人要觉得我是水军了所以点到为止。

作业

应该是4次,不过这学期假期有点巧所以就3次,难度适中,题量不大,不过画自动机和推parsing table之类的不可避免地会花时间,没什么问题。

Project

一个project是SPL(SUSTech-Programming-Language) Compiler,分四个阶段分布在整个学期,从前端(指lexer, semantic analyzer, intermediate code generator, optimizer)写到后端(MIPS32 code generator),前三个phase满分100,最后一个60即满分,多出来的可以补前面的,详情请读文末的lab课件和project。

Project还包含一次占比5%的research/survey,本学期主题是调查一个开源编译器,角度很多样。

无论是SPLC还是survey,做的好就有一次pre的机会,pre之后有+1总评的bonus,还是挺好的。

考试

期末有个35%的考试,允许携带一张A4 Cheating sheet,鼓励手写,不允许多人使用同一份打印档,难度而言感觉并不超纲,考察内容和课程内容完全一致,虽然我计系的纸质考试就没有考好过,但这一门是为数不多让我真心觉得试卷无论是内容还是难度还是题量都很正常,是我自己没考好的计系课(也没有吐槽其他课不好的意思。均分63.6,最高91,感觉这一学期确实没有考试战神出现。

总之,好课,上!

后排广告(请不要在意先后顺序)

IskXCr出品的能够接上LLVM后端优雅且强大的C++ SPLC

给Monad神将会开源的基于Rust的SPLC放个占位符

GAS开发协会出品的得分399/360的纯C课程项目

咕桃的CS323课程资料仓库(含理论实验课件、平时作业、期末cheating sheet[实测有用])

*感觉全放这里有点占空间,直接去GitHub就能翻到很多优质作品了!

温馨提示:刘老师明确表示cheating paper不可共享,并且计系有完善的学术诚信体系,以上cheating sheet/project/作业仅供参考,创作者不对错误使用上述材料造成的后果负任何责任。

user avatar   xss     2020秋
  • 难度:困难
  • 作业:中等
  • 给分:超好
  • 收获:很多

计算机经典课程,很有挑战也能得到很多收获。

作业包括理论作业、lab小练习和project。在project中最终可以利用 flex、yacc 等工具实现一个完整的能用的编译器(虽然最终是在 mips 模拟器上跑的)

刘老师的英语口语十分标准,听课不会有口音上的障碍。少部分复杂的概念如果我们听不懂也会用中文解释。

去年的课程材料仓库:https://github.com/sqlab-sustech/CS323-2022F

user avatar   Randomizer32w     2023秋
  • 难度:中等
  • 作业:中等
  • 给分:一般
  • 收获:很多

授课和考察的内容主要集中在前面的Parser构建上,对后端处理和优化方面还是讲的/考察的/在Project中体现的比较少。


teacher avatar

刘烨庞

计算机科学与工程系

教师主页

其他老师的「编译原理」课

    刘烨庞老师的其他课