编译原理
课程信息

信息科学与技术学院4 学分

得分:★★★★★ 9.8(基于 12 条评价)

简介:N/A

评价(共 12 条)

victoryang00  ★★★★★ 10.0 · Feb. 24, 2020

Foo 真的是男神级别的老师,课程量充足,Project 分布合理,从 lexer 的正则表达式到 semant 的有限自动机,再到mips的汇编代码生成、寄存器分配(第一次了解帕斯卡寄存器分配)。
当在写pa3的时候就开始怀疑选课的时候给自己下的套,为什么要遭这种罪的感觉。没学过汇编pa3、4会比较困难。
wa1-4都是水平比较高需要想挺多的。大家选了之后自行体会。OF找Foo 问作业一道Cool 的 Operation Semantic 的题目,说是Manual 里有说 Void 是所有 Object 的类型祖宗,T在未被定义前为Void 这个是不对的。在dispatch的时候加上标志符。在做pa4的时候这点非常精妙,类型是一个Tree的结构。
最后为了保gpa做了一个小project,一个自动化android app动态污点分析的vscode 插件,后来发现考的还行,不用加分也能拿A-。
现在在Foo 组里帮忙,争取自己能完成paper,来年也加油呀!

啦啦啦啦啦  ★★★★★ 10.0 · June 17, 2018

强烈推荐,作业分为writing assignment和programming assignment,wa 用latex模版来写,主要巩固复习课上学的概念,pa实现一个完整的编译器各个部分,从lexer, parser, semantic analysis 到 code generation,挺有意思的。尤其学过ca以后,不会出现向其他评论中mips抓瞎的情况。。。。。
课堂是小课,所以互动还是很强的,有问题宋富老师也会耐心及时的解答。课堂上还补充了一些形式化验证和安全的内容,都挺喜欢的。课下不会的问题请教的机会还是很多的。挺花时间的,要学好要花足够的功夫。(单独pa还好,单独wa也还好,但是两个同时就比较多了)
bonus project可以自己选,包括rust相关的研究,编译器的安全问题,自己做了一个和nlp结合的,希望进展顺利一点吧(还没做完)。。。。。。。。。。。
要说可以改进的地方的话,早八的课可能课堂效率会低一些。pa加一下在线测评脚本会更好,然后问答的话还是尽量用piazza吧。。。。。
总之,强烈建议选修,cs最好学一下这课(喜欢打圣战的可以了解一下hhhhhh),不仅仅对系统方向有用。。。。
马上期末考试了,希望给分仁慈一点吧。。。。。。。

----- 以下内容追加于 Jul 17, 2018 -----
最后A-,作业和考试都不算太好,可见宋老师还是很大方的

kiseki  ★★★★★ 10.0 · Jan. 3, 2018

名副其实,课程顺序完全按编译器处理顺序执行,从词法分析、语法分析、语义分析(类型检查)再到代码生成,总共四部分。对应的,每部分各有一个 Writing Assignment 和 Project (Programming) Assignment,可以说不是很多。编程作业是用 C++ 完成一个 COOL 语言到 MIPS 的编译器。最后一个(汇编)代码生成有些吃力(没怎么学过 CA,汇编的东西实在不会搞,不过 MIPS 也不算太难吧),编程作业没写完,前面的部分还是相当喜欢的,可能是自己本来就比较喜欢语言的分析吧,也许以后会做 NLP?(笑)

听过课考试应该完全没有难度,允许看 slides,虽然我期中的时候瞎搞,炸了。。不过最后得了一个 A-,可以看出宋老师还是挺大方的。

我今天算是得罪你们一下  ★★★★★ 10.0 · July 12, 2017

个人选的第一门CS的专业选修课,一学期上下来感觉蛮有意思的。
宋老师备课很认真,课上练习同学不会也会下来耐心的解答。作业分Writing Assignment和Project Assignment,前者主要是理论方面的知识,宋老师提供了Latex模板,虽然上手比较困难但一学期下来也就玩的比较熟了,应该会对以后论文写作有不少帮助吧;Project Assignment则主要是通过几部分来实现一个完整的cool语言的编译器,前两次作业个人完成,后两次作业因为代码量较大可以与另一位同学组队完成,难度有些大,最终能实现完整功能以后也会很有成就感。此外宋老师还设计了几个额外的业内前沿的Project如编译器测试、Rust编译器研究等,自己水平不够没能深入了解研究。
编译原理这门课本身对于CS学生来说还是很有必要学习的,毕竟要写出好的程序至少要了解编译器的原理和操作系统的一些基本知识。宋富老师的课程安排比起国内其他高校的课程来说与前沿技术结合更多、更注重实际运用、难度也更大一些。

Scientist  ★★★★★ 10.0 · July 11, 2017

质量很高的课程,强烈推荐。

课程的逻辑清晰,从编译器的工作顺序出发,按照词法分析、语法分析、语义分析、代码生成的顺序进行讲授,中间穿插了自动机、正则表达式、CFG 等概念。

宋老师的中文授课还是很好的,深入浅出,逻辑清楚。不过也许是选课人数太少加上早上第一节课,尽管宋老师努力加强与同学们的互动,有时难免会出现冷场,给课堂效果打了些折扣。

作业分两部分,纸质作业是针对每一个专题的几道习题,编程的 project 部分是自己实现一个 COOL 语言的编译器,很有挑战性。

最后推荐一下宋老师的暑假学习班了,关于计算机辅助验证的,有兴趣的都可以联系他。

maverick117  ★★★★★ 10.0 · July 8, 2017

SIST为数不多的课程内容对的上课程名称的。

内容主要涉及编译器的基本概念,例如lexer, parser, semantic analyzer, intermediate code generation和basic code generation。

课程大作业是用C++写一个COOL (Classroom Object Oriented Language)的针对MIPS指令集的编译器。

宋老师人很好,备课很认真,slides也不错。手写的作业对于课程内容巩固很有帮组,量也恰好到位。课程分数分配比较合理。

如果对于编译器感兴趣建议选修。建议基础:C++,数据结构,OOP

----- 以下内容追加于 Jul 10, 2017 -----
补充:最好也有一点汇编基础

小张高手  ★★★★★ 10.0 · March 17, 2020

听说很难,上完感觉好像很简单?
启发式点名比较有意思,每次上课以一定概率做exploration,随机点名,更新后验分布,然后之后的课中exploitation中对不来概率较高的进行点名。随着十几次课进行,分布趋于稳定,exploration概率较低,每次就点那几个不来的。

 ★★★★★ 10.0 · Jan. 8, 2020

上课讲的内容很充足,个人感觉内容比CS143公开课要更丰富
第一次写超过1000行的代码,感觉对之后别的project有了心理准备
上课quiz要求快速掌握新的概念
后半学期要明显比上半学期难,不过难度不会反应到试卷上(
考试区分度不大(
比这学期另一门专业课要舒适很多
总的来说很优秀

linonetwo  ★★★★★ 10.0 · Feb. 3, 2019

此课颇为实用,工作中手撸 POS Tag matching 就回来翻课件了。

给分也很仁慈,我在多次作业严重划水的情况下,因为完成了课外项目 https://github.com/linonetwo/COOL-to-JavaScript 所以加了一些分就给过了;考试还能带自己写的程序来算自动机相关题目,可以说遍地都是「后划水自救机会」。

皮蛋瘦肉粥  ★★★★★ 9.0 · July 11, 2017

这门课非常难。。。前半学期还能跟得住,后半学期内容就开始慢慢的跟不上了。。但是老师非常用心,上课准备也很充分,也能因材施教。
可能还是自己基础太差吧。。。想选的同学尽量考虑好那个学期要预留一点时间出来,这门课的作业和project是需要一定的工作量的。

金融网通电话过剃须膏  ★★★★☆ 8.0 · July 9, 2017

课前问了foo有没有先修,然后他告诉我上了编程就好了,然而。。。。。。

后面汇编抓瞎。

toor  ★★★★★ 10.0 · July 8, 2017

这门课干货很多,宋富老师备课很认真,作业量适中,Project 很有挑战性。考试给分也挺合理,不过自己没有学好…

已经为数据库中的 407 门课程提供了 600 条评价
Copyright © 2016-2017 CourseBench. Some rights reserved.
♥ Built by Roy Chan with Kayla