选课类别:专业任务 | 教学语言:英文 |
课程类别:专业选修课 | 开课单位:计算机科学与工程系 |
课程层次:未知 | 获得学分:3.0 |
省流:计系毋庸置疑的好课!
课程大纲一目了然逻辑清晰,上一学期下来感觉结构很通透(虽然一学期肯定是不足以学透编译原理的),完整讲述了编译器的各个部分是如何将高级语言源码编译成机器码的过程,是听着很舒服的全英文,课程节奏也不算很快,课程内容的设置感觉比计组/OS会少一些,属于是刚好可以完整消化的程度,本人认为容量、难度、节奏设置最合理的计系课之一(还是加个之一比较客观),教材是龙书,具体内容可以看文末的第一节introduction课件了解。
理论和实验课的讲授都是刘老师负责,都讲得很清楚,再吹可能有人要觉得我是水军了所以点到为止。
应该是4次,不过这学期假期有点巧所以就3次,难度适中,题量不大,不过画自动机和推parsing table之类的不可避免地会花时间,没什么问题。
一个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
咕桃的CS323课程资料仓库(含理论实验课件、平时作业、期末cheating sheet[实测有用])
*感觉全放这里有点占空间,直接去GitHub就能翻到很多优质作品了!
温馨提示:刘老师明确表示cheating paper不可共享,并且计系有完善的学术诚信体系,以上cheating sheet/project/作业仅供参考,创作者不对错误使用上述材料造成的后果负任何责任。
计算机经典课程,很有挑战也能得到很多收获。
作业包括理论作业、lab小练习和project。在project中最终可以利用 flex、yacc 等工具实现一个完整的能用的编译器(虽然最终是在 mips 模拟器上跑的)
刘老师的英语口语十分标准,听课不会有口音上的障碍。少部分复杂的概念如果我们听不懂也会用中文解释。
去年的课程材料仓库:https://github.com/sqlab-sustech/CS323-2022F
计系精品好课,CS三大浪漫之一不学CS生涯不完整.jpg
刘老师鼓励式教育给分超好,而且讲得很通透,结构完整,节奏也很舒服,足够大部分同学消化。
课本是龙书,主要包括编译器的基本理论(能跑就行),英文授课(无论有没有国际生)
编译优化的内容很少,可能是刘老师有意控制难度 但其实也挺好的可以摆一点
作业这学期是四次,只涉及lexical 和 syntax 的内容,基本上都是龙书的题,写起来可能比较麻烦但不难。
lab都是中文,教用flex写lexer,bison写parser,也会给一些starters code(类似project的demo)。practice大概有8-9次,都是用flex/bison写一个简单的练习题。
中期左右(11月)有一个pre,展示在compiler/programming language做的调研探究,全自由发挥,然后交一个小报告。
Project 当然是做一个compiler,但今年刘老师大改project
本人被队友带飞的Rust写的全程开源的魔改版SPL Compiler
可爱Ice和他的大爹们写的酷炫函数式语言(什么你不知道函数式?)
薛神写的类rust的compiler但是我没链接
你的Project
据说24级开始这门课必修了,鄙人认为是个好事,这种课就该上。
授课和考察的内容主要集中在前面的Parser构建上,对后端处理和优化方面还是讲的/考察的/在Project中体现的比较少。