编译原理和技术(李诚) 2020秋 2019秋 2018秋  课程号:01116302
2020秋 2019秋 2018秋  课程号:01116302
9.5(14人评价)
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:很多
选课类别:计划 教学类型:理论实验课
课程类别:本科计划内课程 开课单位:计算机科学与技术系
课程层次:专业核心 学分:4
课程主页:暂无(如果你知道,劳烦告诉我们!)
点评 写点评
King.Zevin 2019秋

本学期⑦助教之一

本学期课程主页:http://staff.ustc.edu.cn/~chengli7/courses/compiler19/

本学期决定不用qq群,而改用gitlab的issue

------------

欢迎吐槽

2019-09-02 15:29 8 1
Lotdhh关于LLVM,推荐一本书:Getting Started with LLVM Core Libraries,对LLVM各个模块都有介绍(包括实验用到的IR模块)。 2019-10-31 21:13

立即登录,说说你的看法

TheLitFire 2019秋

总评94,有点小伤心,不过自己期末考的怎么样也是有数的。

实在是想狠狠的夸一夸李诚老师,要不是我对系统和分布式兴趣不大,我一定和李老师跟到博士(你在想peach)

多说一句,如果大家在各课程看到一位新加入科大的教授(而且比较年轻),建议去试一试,甚至能在实验室里混到一席之地吧(为什么我就没有这样的命运嘤嘤嘤)

闲话不扯了,建议大家来。

 

最后大言不惭的谈两句对这门课程的看法:我实在觉得这是相比本学期其他课程以外,最简单的课了

1. 有清晰的算法、概念、计算步骤与思路;没有十分困难的设计和灵光的闪现。

2. 教材(龙书)讲解的很好,如果要精炼一点,昱姐的紫书也还可以(但我至今认为它就是在抄龙书还抄的不咋地);相比其他同年课程(随机过程,遍地都是错;微机原理,废话太多书还绝版)要好得多了。

3. 课堂与考试最为接近,这点与计算方法和随机过程相比尤为显著。

4. 李老师单独出题,考点鲜明,也不为难人,看懂书学会算法绝对能拿好成绩。

2020-01-28 09:32 6 0
Lyncien 2018秋

课程:

有点难度,但毕竟不是H班,还是能接受的。词法部分不难,语法最难的地方就是搞清三种LR的构造/区别,还有就是判断/写出上下文无关文法,二义文法(习题集好多难题);语法制导定义/语法制导的翻译(蜜汁中文翻译),两个概念一开始还分不清楚,自上而下/自下而上的继承属性的计算,写出栈操作代码也是有点难度;类型检查,数理逻辑再现。。中间代码生成,就是设计翻译方案来生成代码,涉及短路计算/代码回填;运行时存储分配,学习了之后对实际编程还是挺有用的;代码生成和机器无关的优化,简单介绍基本块和流图,数据流分析,考试时会有计算题

课本还是一如既往的科大风格,难啃,感觉大部分和龙书上差不多,一学期下来大概只上了半本多,后面更难的部分没有上

作业是部分课后习题,答案大部分在配套习题集上有,次数很多,但交了就有分(当然,要认真完成

实验是实现PL0编译器,三人一组,会学习使用git。助教给了一个框架,其后几次实验实现词法、语法、错误检测/功能拓展、代码生成。和隔壁班的略有不同。

考试是两个班老师合出,隔壁班老师喜欢考复杂的指针和PL0相关的,考前可以看看隔壁班老师主页上的题

老师:

科研水平很高,年纪轻轻就是正教授,我等楷模

教学水平,虽然是第一次上课,但真是比一些ppt播放机强多了,课件也很用心在做,但有时候试图解释某个概念/想法时并不是很清楚(可能书上有些词就是不好解释)

上课时还会关心一下同学们,分享一些人生经验/故事,课件末尾也会有名言警句,可以说是很棒了

最后给分也非常好,付出努力的都不会差

助教们:

很负责,有一位助教专门更新网站,每次上传课件都会发邮件通知

其他助教分别负责一次实验,会根据同学们的反馈更新实验要求

开学初就建立了Google的邮件群组,有通知和反馈都会收到邮件,很赞


课程主页:http://staff.ustc.edu.cn/~chengli7/courses/compiler18/

2019-02-01 21:01 4 0
orz2345 2020秋

课程还没结束,先来小声吐槽一下。(给分好坏未知,但是必须要填,就随便写一个)李诚老师很认真,大家可能学的都很好也很开心,但是并不包括我qwq

九分是因为老师很敬业不忍心打低分,但是真的太累了(哭

可能之前来评价的都是大佬,个人感觉实验量真的太大了,一个实验还没结束另一个实验又放出来了,最近平均每两周一个实验,每次实验花费5天+。

我这学期一共6门课,如果每门课都像这样留实验/作业,我14天得当成30天才够用((((不睡觉可能时间差不多。

然后上课发言有加分issue提问有加分,感觉自己什么都没懂什么都没开始做,周围的人就全都会了qwq(从期中考试来看真的是大家分都巨高,满分十几个((((

虽然选课前做好了充足的心理准备,现在学期中了还是觉得压力好大,这门课对我来说真的是上课巨难、实验巨难、压力好大qwqqq。老师的本意是好的,期末占比调低,几乎和实验占比一样。但是现在转念一想期末只是承担两个星期的压力就好了qwqqq,现在一学期都陷入焦虑,不停写实验.jpg

2020-11-27 21:26 3 0
Fancy 2019秋

看到今年的评价不太多,所以来说说今年课程的主要内容。

今年主要使用 gitlab 发布课程信息、作业、PPT以及问题讨论,地址是 http://210.45.114.30/,据老师和助教的想法是这样比较能避免水群的问题,而且有信息和问题大家能一起讨论。实际体验还不错(除了有些你特别着急的时候可能无法及时得到回复,但是一般 ddl 时间都留的比较够,这种情况一般不太会发生),大多数情况下助教和老师的回复都很及时(这里赞李老师,真的是到目前为止大学见过最负责的老师,会经常看 issue 并及时回复)。

课程主要内容和之前的变化应该不太大,还是那些东西,我基本上就只看了 PPT (大雾,期中考试之前才买了龙书,但考试的时候也没看),PPT 很细致,会把讲的例子的步骤一页一页的呈现,并且还有不同颜色标注重点,真的很赞。

实验内容今年变化比较大,今年是写一个 C- 语言的编译器,使用 LLVM 作为中间层,一共 4 个实验:

  • 实验 1:使用 LEX 进行词法分析;
  • 实验 2:使用 YACC 进行语法分析;
  • 实验 3.1:对给定的几个简单例子手动翻译为 LLVM IR;
  • 实验 3.2:将使用语法分析之后得到的语法树翻译为 LLVM IR;
  • 实验 3.3:阅读 LLVM 中几个机器无关优化的源码,撰写阅读报告;
  • 实验 4:阅读 LLVM 中关于寄存器分配的源码,撰写阅读报告。

具体的实验内容可以参考 gitlab。实验一比较简单,唯一的难点可能是匹配多行注释,这个在网上有很多资料可以参考;实验二还是得吐槽一下,助教的目录结构特别混乱,给的教程质量也不高,导致很多同学把大量的时间花在了 merge 更改和把 lex 和 yacc 结合在一起,而不是实验本身;实验三是综合来说最难的一个实验,但好在实验有比较详细的教程和铺垫,并且是组队实验(ps:选个靠谱的队友!),大家认真合作一下还是能完成的不错的;实验四的写阅读报告其实我感觉也挺难的,这个比较考验查找 LLVM 文档的能力,源码中的有些变量挺迷的,最后也接近考试复习了,于是就口糊了一下(雾)。总之实验的质量还是很高的,如果要提建议的话,建议下次助教之间好好协商一下目录安排、实验内容这类比较影响全局体验的东西上,否则就有可能出现这一个助教觉得上一个助教的东西比较乱于是直接推翻重写了一套的情况(也不是不行,但是感觉不是很连贯,最终也没有把自己写的几个实验结合在一起变成一个真的编译器),不过影响其实不大。

作业:课程前一部分作业布置的不少(我感觉其实还好),有同学反映作业太多之后,老师的作业量立即变少(真的很考虑学生的感受),不过还是涵盖了重点。唯一觉得可能需要改进的一点是作业的批改和正确答案的公布可以再及时一些。

考试内容:期中开卷(但不可以带紫书答案),除了第一题需要将一个很复杂的 NFA 转成 DFA 是真的很麻烦(因为我这类题本身做的比较慢,所以写出来 NFA 之后直接跳了,有些没跳的同学后面的时间不太够了,所以需要自己权衡一下),其他的题都是很正的题,如果熟练的话基本不需要看带的资料;期末考试闭卷,今年没考数据流分析,考的都是重点和老师强调过的知识点,没有偏题怪题,建议听老师期末之前的复习课,课上老师会讲考试范围、重点,帮大家复习一下(PPT 当然也会上传),还考察了实验相关的内容,建议每次实验出分之后好好看一下自己出错的地方。

最后,这门课的体验是真的很好,这应该是大三上我所上的课中听课人数最多的一门课(雾),李老师是真的很负责,水平也很高,助教也很负责。

综上,给这门课点赞~

2020-01-31 11:32 3 0
kekeke 2019秋

李诚老师实在是太棒啦!幽默风趣,讲课一流!

但是这门课属实是这学期负担最重的一门课。实验是写一个cminus编译器和llvm代码阅读,总共有6次,难度不小,每一次实验都得花两三天来做。作业其实也不少,总共布置了13次。

最后,李诚老师其实给分很好啊,如果自己成绩不行的话,就扪心自问一下自己学得到底怎么样吧。

2020-01-25 16:31 2 0
ldeng 2018秋

大学以来上得最舒服的一门课。

李诚老师很年轻,有激情、有理想、有抱负,同时又脚踏实地、认真负责,课上得也很棒。

编译原理应该是本科期间较难的一门课程,但是相比于张昱老师的编译(H)(也是口碑非常好的一门课),给非英才班准备的这门课程总体上难度一般,也只是涉及了编译原理最基础的部分,可以说不存在什么本质上的困难(也可能是李诚老师教得太好了)。

实验设计得很好,循序渐进很有成就感。实验过程中老师和助教也在和我们交流,根据反馈调整实验,不像某些课实验布置后助教就失踪。实验基础要求很简单,但有很多拓展选项,最后评分标准也很清晰,总之给人体验是非常好的。

最后给分也很好,实在是挑不出毛病的一门课。

2019-02-01 12:54 2 0
yusanshi 2019秋

课程体验很好,李老师人很 nice,十分推荐!

 

课程没有 QQ 群,课程讨论和实验、作业提交都是用自建的 GitLab 平台,大家有问题在上面提 issue,助教和老师很负责,回复的一般都很快。

实验部分改动较大,今年的任务是完成一个 C- 编译器(其他评论有详细说明)。在实验前期有过一些小风波,但是处理的很不错。

最后再补充一下李老师的个人魅力,除去教学、科研这种“本行”不说,老师还人品好、情商高,十分关心同学。就我自己来说,除了课程知识本身,还有很多课程外的收获。还享受过一次私人专车接送服务(我住东区,老师在西区讲完习题课问有没有同学要回东区,我就顺路搭车了 \笑哭)。

(可能唯一的遗憾就是,两场考试,由于自己比较浪考的都不算理想,有点愧对李老师 \囧)

2020-03-24 12:22 1 0
水平价 2019秋

刚刚开始这门课的时候确实觉得可能有一点相性不合(后期也不太合),实验、作业相对另一个班负担重很多,也接触了很多完全没有接触过的东西。但李诚老师值得满分,不只是学术上的导师,人生的导师,生活中的朋友,“我们应该去做一些有挑战的事情”。

总之,如果选了这个班,开头会后悔,中期会后悔,但最后一定会感念遇到诚哥的(个人真实经历……)

如果你想问给分的话,给分是真的好!

2020-03-21 23:04 1 1
Leon我要选这门课了orz(我是数院的),希望学期结束时我不会后悔(不过已经做好了在这个过程中不断后悔的准备…… 2020-08-26 15:15

立即登录,说说你的看法

Indigo6 2018秋

怎么说呢,又被1楼说得差不多了,那我就补充几点吧:

1. 李诚老师上课的热情、专业能力、三观等等真的都超好,举个栗子——我认识的一个大佬因为上了这门课去了他的实验室;再举个粒子——老师有次课前几分钟说 :" 我常常在实验室看到,很多同学很晚还在赶报告,或者周末都在实验室。有时候我自己也会这样,但是我后来想明白了,我们首先得做人,该洗澡的时候洗澡,该打球的时候打球,不能因为事情就连最基本的人的需求都不好好处理了”。(记得不太清楚了,反正这么个意思)

2. 美中不足之一:有一些概念解释的时候,老师思路会不太顺畅,还是很难听懂,不过结合实验慢慢就能理解了。

3. 美中不足之二:实验某几个阶段负责的助教不是很认真吧?实验要求写得很简略,然后有些地方会设计错。我们小组写实验时的一大乐趣就是“口嗨喷助教”

2019-02-22 19:56 1 0
Ursa_polaris 2018秋

第一次写评课决定给这门课。虽然大概这个班级的课程没有隔壁H班那么难,但是我觉得老师的讲课水平也是非常不错的。上课认真的同时不会跑题,下了课会看课程群并且回答群里的问题(这个我觉得能做到的老师大概不多),对待同学们的态度非常随和,但是又不会失去严谨性和严肃性。

实验的话,本学期实验是把一个PL0语言分析器拆成三部分写(PL0语言可以认为是Pascal的简化版),分别是词法分析器,语法分析器,语义分析器。实验是分组完成的,助教会教不熟悉linux的同学如何从零开始使用git。本人也是这学期刚刚学会使用git。感谢组长没有抛弃burden(

给分的话,在下作为科大底层人民,过了,表示很感激。

2019-02-01 12:46 1 0
petergu 2019秋

老师讲的很好,实验也很愉快,必须给10分啊!

关于lab,头一次写这种规模的程序,也头一次看项目源码,收获还是很大的。

实验有用git,配编辑器自动补全以及自己编译东西等等操作,看讨论似乎对初学者不太友好但算是折腾党福音?因为今年是改革比较多的不知道未来会不会有其他改革。

教训是要好好看说明/按时交作业,我第一个lab提交错了地方,后面又有一到两次作业忘了交,感觉影响了一些成绩。

2020-03-08 16:20 0 0
daiaqswde 2018秋

其实课程很难,实验也很难。但是说真的,给分不错。平时多去issue区发一些有价值的问题,是巨佬的话可以去回答问题,这可以使得你的总评有直接的提升(也许会有老师给予的无形提分)

 

2020-01-29 18:49 0 0
Don 2018秋

实验太多,给分不好!!!

2020-01-24 10:10 0 0

李诚

教师主页: 戳这里

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

郑启龙 8.5 (10) 2020秋 2019秋...
李卫海 7.0 (2) 2019春 2018春...
未知 2016秋
陈意云 2011春 2007春...
陈意云, 张昱 2010春 2009春...
张昱 2012春

李诚老师的其他课