编译原理和技术(李诚) 2022秋 2021秋 2020秋 2019秋 2018秋  课程号:01116302
2022秋 2021秋 2020秋 2019秋 2018秋  课程号:01116302
8.2(43人评价)
  • 课程难度:困难
  • 作业多少:中等
  • 给分好坏:一般
  • 收获大小:很多
选课类别:计划 教学类型:理论实验课
课程类别:本科计划内课程 开课单位:计算机科学与技术系
课程层次:专业核心 学分:4.0
简介 最后更新:

This course considers the principles that underlie a wide variety of compilers, and focuses on the problem of translating programs written in a high-level language into semantically equivalent programs written in low-level machine code. After taking this course, students are expected to understand the principles of designing and implementing modern programming languages, and to implement a working compiler using standard compiler tools.

点评 写点评
排序 学期
评分 评分 43条点评
buzhidao 2021秋

 

我可以理解优秀率超然后微调。all in all,诚信无价。

 

一点半了,睡不着,这分真的太寒心了。

 

怂,删评跑路

(最后修改于 10 1 复制链接
猫猫cat确实垃圾

立即登录,说说你的看法

Rengin 2021秋

补充:记录一下2021秋出分前后的经过,以免学弟学妹看到该学期很多又吹又黑的评论一脸懵逼(

1.28 课程出分,给分与原有比例计算结果相比下调严重(该课程所有给分和考试及平时分占比全部公示),大部分同学都比预期低一档,且期中期末占比相差过于悬殊,引发众怒,并进一步质疑李诚老师信用问题。

1.29 李诚老师声明,之前ppt上的占比只是预期占比,不是最终比例。

1.29深夜 李诚老师撤回给分。

2.15左右 李诚老师声明在争取中,并说明不会低于之前给分。

2.18 课程再次出分,于原始给分相比平均增加了两分,与原有比例计算结果相比下调四到五分。部分同学质疑此为先涨价再降价的策略。

虽然给分似乎让大部分同学满意了,但如果是为了给实验没能拉开差距善后的话,这是治标不治本的。实验内容逐渐稳定,github参考资料越来越多,新实验如加分实验的设计没能收获普遍认同,这个问题只会越来越严重。


以下为原答案

优点和缺点都过于突出的课程。

除去新加入的加分实验lab5,实验设计是科大计院所有课程最优秀的之一(甚至可以去掉之一)。除了对编译原理知识的应用,还可以学习gitlab的使用,C++数据结构和算法的设计等等,对锻炼工程能力有巨大帮助。与ics的大跃进不同,实验层层递进,设计非常合理。具体可以参考2021秋之前的评价,如李诚老师所言,这确实是能学到很多知识的硬课。

讲课和作业都较为合理,可能唯一的瑕疵是后端部分讲的没有前端部分好,不过这可能也和课程安排有关。

优点很多评价说的很充分了,主要说下缺点

1.使用gitlab,不建立qq群,理由是qq群会有人经常水群且不稳定(??????)。使用gitlab熟悉git使用本身非常好,但是gitlab只能校园网访问且频繁崩溃(高新区电缆又双叒叕断了甚至成了一个梗),这就舍本逐末了。服务器相关的问题应当在课程安排之初就解决。

2.实验文档和讲解的部分凡尔赛言论对刚接触的新同学非常不友好。包括但不限于“写了这么多了,大家都会了吧!”,“访问者模式非常简单”,“这个特性实现较为简单,bonus不会很多(结果该赛道没有人写)”。这些知识掌握后确实会发现很简单,但周围很多同学因为这些内容破防放弃实验。

3.诡异的发issue总评加分。发个vscode教程/指出实验文档路径错误可以加分,这加分和lab5一比就离谱,而且我服务器都上不去发个鬼issue。强烈建议取消。

4.给分杀手,普遍向下调分6分左右,大部分同学都比预期低一档,卷面总评算上bonus破百的同学也没拿到4.3,重视gpa的同学需要注意。

这门课更像是李诚老师实验室的招生课,而不是一门理解原理的计算机专业课(笑)。尽管给了较低的评分,但总体还是倾向于推荐的。以上。

(最后修改于 10 1 复制链接
猫猫cat确实垃圾👎🏻

立即登录,说说你的看法

棉花糖 2020秋

先给这门课一个总体的评价吧:

中科大计科院设计的最好的一批课程之一。


细说:

内容:通过学习这一门课,同学们不仅能够学习到编译原理的知识,还可以学习到包括且不限于C++语法、git的使用、markdown文字处理、软件工程实践、gdb调试等许多在大一大二学习中缺失的内容。

讲课:李老师讲课还是很不错的,不会太跑偏也很清晰。而且ppt中给了很多过程性的描述,可以让大家很生动地理解各个知识点。

作业(20%):相比前几年应该减少了不少。。。我反正每周就花了2个小时。。。

实验(40%):又大又硬。lab123算是热身性质的,基本大家都能拿满(不要学我,lab1遍历字符串的时候从i=1开始了),lab4是独立完成一个CminusF编译器,当时真的差点没把我干碎…我们组完成后的工程差不多有600行代码,大家可以想一下自己调那些不到100行的小代码的时间,然后大概估计一下调这个玩意的时间…lab5是完成3个中间代码优化pass,这个实验感觉就简单多了,稍微注意一点大家都能拿到不错的成绩。

总之一步一步把各种各样的东西都调通还是很有成就感的一件事情,而且说实话这个实验应当是大家这辈子唯一一次接触中间代码生成的编写,所以好好做一做还是很好玩的。另外lab和课程的知识点的结合也很紧密,我后期复习考试的时候就只要通过回忆一下实验,很多内容就明白了。

考试(40%):本门课程包含期中期末两场考试。期中开卷,有手就行;期末闭卷,做了实验基本随便写吧。没有概念解释和优缺点分析,基本上好好做了实验也是有手就行。

 

这门课我个人认为基本上是最能体现理论与实践相结合的一门理论实验课。老师的授课思路很清晰;作业出的题都是需要自己思考的题目,而不是机械性地去查书;实验非常硬核且很有意思,而且能够让擅长实验的同学可以获得一些领先(而不是像COD、OS的实验大家都满分只能拼考试);考试不需要特别看书上的文字,通过复习考试让大家更加熟悉编译器、运行时的各种东西。

另外助教真的都是神仙。。。回答问题、反馈作业都很及时和准确,而且可以看出助教在实验设计上付出了比我们多得多得多的时间,也为此再次感谢各位助教。

关于成绩:

因为不知道期末具体成绩不予评价。不过我个人感觉实验好好做了肯定不会差。

关于bonus:

两个bonus我都加了分了。但我很卷吗?

有些人嫌发issue卷。认识我的人都知道我老咸鱼了,就把正常需要问的问题在git上发了一下而已,怎么就卷了?

有些人嫌bonus实验卷,先不说总共就加两分,你要是愿意在考试上多花时间复习涨个两分一点都不难;更何况写一个bonus pass一个组基本上就只需要3个小时,然后就直接能拿到2分啊?分明是你自己懒吧?

特别是这一堆评分基本上组和组之间都是独立的,而且也不存在所谓某几个组因为做得好导致老师提升评分标准,卷啥了啊?

更何况开学就提了实验和考试占相同比例,明知道的情况下还不努力?


补充:

我看某些同学嫌别人卷

您配么?

合着是愿意花时间在实验上是错误的?你愿意花2个小时背书我愿意花2个小时写代码我就不配高分?

另外我们这次实验真的是军备竞赛么?先不说按照2人组均分50%评分一个同学想拿满分完成分只需要80分,也就是说只要完成了助教在文档里提示到的所有点就可以拿到满分。就这都能叫卷?是不是实验就只配printf一个helloworld然后大家都满分才和您的意?

就应该给你们出点int a[][2][2]={1,{2},{3},4,5,{6},{7},8,9}然后大家一起军备竞赛复习?再出点LR1、LALR、SLR的优点缺点写不对就全扣?

另外我倒看着好多同学抱断别人大腿的样子很靓仔哦。

 

10 3 复制链接
细雨点洒在花前我也觉得 bonus 其实还可,因为加的分少啊,期末考试多写对一个题基本就加回来了(
tianji同学您好,能方便向你要一份课程PPT和相关实验资料吗
呵呵回复 @tianji: 不是有课程主页吗

立即登录,说说你的看法

suyuz 2020秋

总体评价

这应该是本人大学四年上过的各方面体验最好的一门课(因为提前修了Web,并且大三下上了两周课,尚未感到有更好的,以及web没给我100

老师,实验,考试,课程平台,以及助教团队在我看来都是值得给满分的。但这门课的工作量和实验难度也确实值得一个H课,劝对这方面不感兴趣的同学慎选,不如换个班划划水、去上上机器学习啥的。接下来开始细说。

老师

李诚老师yyds。

实验

本学期的实验跟以往不同,总共分了五部分,并且每一部分(大概除了3)都与课程内容高度相关

  1. 词法分析,FLEX带你走进编译的大门。

  2. 语法分析,用bison将你lab1的成果种出一棵大树

  3. IR接口学习,承上启下,为接下来的工作做好准备

  4. builder,现在有了FLEX,bison,有了API,有了课程第七章PPT,现在开始做你的编译器吧!

  5. 优化,开启-o模式(看了助教的比赛代码才知道我们做的真少((

前三个实验可以说是铺垫和准备,就和别的课程的普通课程实验差不多。而第四个实验就是这门课程最亮眼的地方,要不然这门课只能叫编译原理,不能加上这个技术

  • 首先说下文档,因为上学期有门课做大作业时需要参考CUDA C的文档,我是感觉晦涩难懂还冗长,并且有些参数我根本不需要,但又不得不去看解释。相比之下,虽然我一开始两个屏幕,一个看源码一个看文档都没看懂,但助教提供的Light IR不仅是中文的,而且就几页,没有什么复杂或多余的参数设置,就这些就能完成所有功能,还要啥自行车(我没了解LLVM源码,就只说个人感受)

  • 接着说一下内容。就是根据助教提供的文档,在语法树结点上填写生成IR的代码。而相关的方法基本上课程内容中或多或少都有提及。当然,学习曲线是V形的,起码我要想很久才能写下第一行代码,中间填结点的过程是很愉快的,但是后面debug的过程又很麻烦。

  • 对于评分,也是目前为止我见过最好的评分方式。首先组队实验,三人队两人队均可,分数设置也是用心考虑过的(不像web我一个人全干了还没加分);第4,5个实验实际上是一个没有排行榜的军备竞赛,需要去猜测助教会出什么样的测试样例,当然不全对也能拿满分(我就没考虑到作用域导致没全对)。但是很多同学好像觉得pass基本样例就行了,然后说测试样例太难,问题是只完成这12个测试样例甚至有个留空的函数都不用写,这明显不合理啊(((

  • 工作量:工作量自然是很大,应该是本人写过最长的一个程序。老师助教也好心给我们延了一周,那段时间我基本天天课上敲代码「太菜了qaq」(幸好延期了,不然一周写三门大实验真就要暴毙了

  • 此处@一波计网,趁早由信院接管吧,虽然貌似信院实验也不大好(

实验带给我的收获是很大的,从零开始学了点cpp、gdb,也加深了对整个编译这门课的理解。但真的有很大工作量,且如果像我一样没有cpp基础的话,想要做好就得从早码到晚。Lab5老师延了救命3天,当时我勉强写完公选课论文+Web实验2,然后从早肝到晚,取外卖的路上满脑子都是流图(此处建议不要做ddl战士

收获大意味着需要花很多时间,如果对写代码做实验不感兴趣,最好不要选,不然看着文档和一堆留空的代码段真的头疼。如果抱着一门水课的心态来,我认为这门课确实0分。总不能指望老师助教又负责、课又水吧。

考试

和课程实验联系十分紧密,教了什么,就考什么,重点划了什么,就考什么

  • 不考概念不考背书,看懂了算法会做作业就行,甚至不用背它(有题怕我们弄混都给出来了),和计网形成鲜明对比

  • 考的实验其实不难,但是如果没有对照过.ll代码debug的话确实很难下手。

课程平台

没建官方QQ群,使用的是gitlab。老师希望大家在gitlab上踊跃提issue,并设置了bonus加分,在我看来效果还是不错的,毕竟是实名但带马甲问问题,在过于水和过于冷之间有个平衡。每次做实验都比较晚,开始做的时候刷一遍issue,能少走很多很多弯路。

有关实验环境也是由助教进行提供,本人使用docker,体验很好。但身边的人或多或少都出现过一些问题,这里建议下次助教一步到位,把vscode remote ssh也教上((

作业实验都是直接git commit,并且对文件夹格式都有一定的需求,直接push我们去学习git,我认为还是很有帮助的,不管是工作还是科研,只要在计算机领域都会用到版本控制吧。(但很多人都很排斥?

助教团队

最后大力赞美我们的助教团队,可以说这是我大学三年来见过最负责任的助教们(真的自愧不如

自己设计的实验文档和接口(虽然好像就是沿用了比赛的接口),对各种疑问的及时反馈(我提个文档缩进问题都改了)以及优秀的业务能力。

不足

挑一些刺。。

  • PPT版本有些奇怪,经常有加长版和后续版之类的,对于异步学习的同学不太友好

  • 不知道是不是有意为之,lab4倘若给一个example会更好一点,我看到builder空着的十几个函数看了一天,过了好几遍文档才写出第一行代码,这样对萌新属实不友好。

  • 实验文档和实验细则更新太快,lab5尤为显著

    • 公告栏隔三岔五更新

    • lab5有个样例明明issue已经提过了,但评分时没有更改(发邮件提醒后更改了)

当然,lab5是新增的实验,出些差错也挺正常的((

总结

可能有人会说我是既得利益者,但我也确实花了很多很多时间(包括卷bonus实验也会占用算法复习时间),并且卷的这些东西都是有用的(起码在我看来比卷实验报告,数学物理和背书大赛有用),我认为这是应得的(逃。有付出就有回报,能切实提升自己各方面能力,老师助教尽心尽力,让我这个几乎0基础的同学也能做好东西,这样的课,上到就是赚到。

妮可的数学物理是有目共睹的难,却不希望计算机学院的专业核心课难、工作量大?就要跟计网、杰哥算法实验一样?因为感觉自己用不到分数低就去说课卷,私以为数学物理才是你们的攻击对象,给咱为数不多的好课留点唇舌吧。

刚好有位浙大同学今天给我发了条消息:

 

欢迎大家来喷我(>ω<)

9 2 复制链接
根本不行zd100昏的神!
细雨点洒在花前最后的黑体字不能再认同了!

立即登录,说说你的看法

King.Zevin 2019秋

本学期⑦助教之一

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

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

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

欢迎吐槽

8 2 复制链接
Lotdhh关于LLVM,推荐一本书:Getting Started with LLVM Core Libraries,对LLVM各个模块都有介绍(包括实验用到的IR模块)。
细雨点洒在花前吹爆助教!

立即登录,说说你的看法

今年研招季过后 update:

我觉得老师本人确实做了不少事情,人也确确实实的是很 nice 的。只不过今年课程上的事情在某种程度上还是算一点小失误吧。希望课程之后可以越来越好(毕竟这是科大计院必修中排名前几的好课了


重新给分之后 update:

从下调5-10分变成下调4-5分左右。目测是更改了期中期末比例。

事件大致timeline参考目前最顶置的评课。

优点我就不提了,往年评课说得已经很好了。就小结一下这门课可能存在的问题:

  1. 实验由于这两年没怎么改,导致这门课预想用实验体现区分度的计划无法实现,进而导致考评上向下调分。

  2. 实验文档仍然存在部分不详细的问题。从零实现的话,有很大难度。在这个情况下还会存在文档中抖机灵的词句,个人认为非常不妥。

  3. 服务器崩溃次数较多,影响课程体验。虽然说个人觉得单服务器可以理解,但按照今年高新区电缆挖断的频率,可能需要考虑其他容错性更强的解决方案。

  4. 各种 Bonus 加分较多,虽然增加课程挑战的初衷很好,不过评测规则不够详细,同时加分的 issue 也与 Lab 5 不够平衡也是存在的问题。同时这个气氛也就比较卷了(这个算另外的事情)

最后上课不要吃东西,这几乎是唯一会阻挡课堂正常进行的事情了(雾


我其实挺奇怪的,这门课从头到尾直到出总评之前都做得挺好的(除了好多人提到的每天崩的GitLab,说实话还不如用 GitHub Classroom...)出总评前没人会料想到会直接在分数比例上动手,直到出分的那个下午。。。

另外组队实验零差评我肯定是不信的。这学期快打起来的就得有好几组了(如果课程组不知道那肯定就是没和你们说咯),再加上被查重 argue 的等等,各种 E-mail 发过去,似乎老师在哪节课也说过,估计各种情况的不少。。。后面的同学做实验的时候记得注意小组之内的协调,毕竟现在就打起来了,以后进公司也可能做个小 leader 或者单纯带几个人很正常,情况基本上是差不多的。那个时候再协调不好就坏了。


心情有点复杂。其他的就不说了,因为今天出了总评,大家在群里哀嚎一片。同学的普遍反馈是按照比例被下调 5-10 分不等,我自己也被狠下调了一把,虽然我已经上科大两年半了已经对分数看得算是比较开了,但 lc 仍然做到了 让我眼前一黑。。。

开学初的考评规定是这样的:

平时考核15% 实验45% 考试40%。但出了分显然不是这个情况。我根据 https://icourse.club/course/14088/#review-43272 中的数据再加上我自己的分数简单做了下拟合:

这个确实不是特别准,主要是我也不知道这些里面有没有没说自己有 Bonus 的,平时分我都是按满算的(下面的公式也就是这个意思)随便做个参考吧(娱乐)

这样就可以算出各部分的比例是这样的:也就是说 期中占比约 8%,期末占比约 42%,平时分占比下调至 50% 且再下调 1.7分。直接和原预期比的话就是5-10分。

本来应该再找点测试集的,但数据不够了。如果有同学觉得这个太离谱可以评论找我,我再看看。

做了这么多无用功的意思是啥呢,我其实也想不清楚。下调也是我意料之中的事情,毕竟要是按学期初的比例算肯定优秀率要超很多。但我拿到自己分数的时候,看到其他同学的分数和抱怨的时候脑子里只剩下这个期末分数是咋算的。。。调分后的这个比例也不算特别离谱,但考虑之前老师上课的时候说过的话,例如:期中是给你们一个定心丸(大家期中分数都考的很好,再加上老师的话,自己可能也都想着期中垫底期末随便考考就行了,后面可能就比较忽视期末,正好随机过程又比较吓人...两个考试又堆在一起了)期末复习课上听其他同学说是对比例画了饼(比如坚持比例之类的话啥的,我上课真没听到,所以也不敢说人家真就是这个意思),所以可能会感觉有点无语。。。总之我也不知道该说啥

要说明年的话,真心建议老师重新考虑下考评规则,要么就提前和同学们说好,要么就开学定比例的时候就定好(比如一考定终身之类的), 或者你期末直接开杀吧,别找了一堆分再往下调。。。 因为实验已经肉眼可见的不再像这门课预期的那样拉开区分度了(调分不也是因为这个吗),目前这样的比例再加上大家一股劲往这个班里涌,期末的结果是必然的。最好还是别最后的时候因为种种限制达不到之前定的规则,这样大家都很不好受。

大年二十七搁这写评课的我手都要冻僵了,考得好考得不好,心情最重要,马上过年了,提前祝大家新年快乐吧,多整点好吃的休闲休闲,别寻思那个分了。。。

(最后修改于 7 1 复制链接
..........................这个 LaTeX 公式我是真删不掉了,评课社区里面的公式用不了所以截了图,随便看看吧

立即登录,说说你的看法

我还没想好 2021秋

出分前内心已经把这课封神了,可惜出完分觉得自己像小丑,毕竟不能免俗,大家姑且一看吧

课程和实验:上之前不少学长说编译工作量会很大,但实际体验下来觉得海星,收获也是真的大,可以给满分

给分:我就不多做评价了,给一些收集的数据吧(来源是官方和各种群的讨论,如觉不妥我立马删)

首先是期中期末以及给分比例:

期中平均分75.45  中位数78

期末平均分65.85  中位数69  最高分89

平时考核15%  实验45%  考试40%  另外有bonus加分,直接加到总评:Lab5最高可加5分,有效issue和上课回答问题最高可加5分

下面是一些dp:

98  70  86

96  69  84

86  75  84

92  70  84

50  70  82

91  75  88 (1分bonus)

90+  80+  93 (5分bonus)

80+  80+  90

85  83  90

89  77  87

74  77  87

94  73  87

94+  74  89

(最后修改于 7 3 复制链接
纯路人感觉bonus影响也很大?补充一个: 78 70 85(1分bonus)
eric0我就是小丑了,lc好话说完坏事做尽。
猫猫cat回复 @eric0: 确实

立即登录,说说你的看法

PB18000000 2018秋

第一次评课,一个星给李诚老师的讲课,一个星给给分上。首先就得讲课完全没有问题,但是有的助教的表现和实验真的很难对这个课有好评。首先是实验问题,实验过多过难是公认的,实验量大是可以接受的,毕竟以前那么多学期,模电还有算法都是有很多实验的,但是实验的评价方法真的难以让我理解。因为不是所有人都想搞编译,学编译只是这是门必修课,所以为什么实验要搞得那么难,把一些对应初学者很难第一遍搞明白的东西强加给别人呢,占用大家大量的时间而且还不一定能做出来呢,实验4,实验5搞成前面3个实验那样不是更容易让大家接受吗?横向对比一下,模电实验同样和这门课是一学分的实验学时,模电实验的实验文档就思路很清晰,而且每周有固定的时间可以到机房做实验,和助教交流,而这门课的实验文档对于一个初学者真的费解,但最不能接受的是有的助教却总说认真阅读实验文档就可以轻松完成实验(真的怀疑他有没有从一个初学者的角度看过,可能我智商不够),加上实验文档和源码反反复复的改变,然后就耗费了大量时间。感觉同样是一学分的实验课,为什么不能搞成每周有固定的时间可以统一沟通呢。最后再吐槽一下习题课上的有的助教,我大一大二俩年所有习题课几乎都参加了,助教水平确实参差不齐,但是第一次见有人戴个帽子上习题课,然后感觉比谁都着急(真的感觉到了不尊重)。在课上,我确实感受到了李诚老师对于编译原理这门课的付出和热情(但是有些助教又把这种感觉搞没了),所以这门课可能更适合一些同样在编译原理上有着相同追求的同学吧。

6 0 复制链接
orz2345 2020秋

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

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

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

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

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

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

6 2 复制链接
小鱼同意同意
萝卜萝卜萝卜这课该换到英才班去

立即登录,说说你的看法

TheLitFire 2019秋

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

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

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

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

 

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

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

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

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

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

6 0 复制链接
pipixia 2021秋

-------后续--------

《杀手的评课社区风评两极分化》

《叔叔硬整issue不合理加分》

《李诚实验较往年未见新意》

《lc出分后遭评课社区怒批》

《李诚老师貌似撤回了原有总评》

《伟大的李•课程设计之王•ppt之神•亲民之代表•GPA之父•诚抵达他忠诚的评课社区》

整个活,以下正经:

大年三十晚上撤回成绩,今晚重新登入教务系统

貌似全员+2(存疑,大部分+2);并且提高了优秀率(存在84卡绩升到86)

这回大概是原有公式-3/4左右,为了平衡优秀率算是可以接受的降分(比如隔壁计网的给分方式就很可取,而且不会被炎上)

这回跟期望值相近了,李诚老师用实际行动表明了他还是很关注同学们的意见的。

原答案的缺点依旧存在,已经更改为情绪平稳版本。

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

没有qq群 -1

gitlab平台经常上不去(被挖电缆 -1

issue的bonus给得不合理,有个vscode教程还给了0.5的加分 -1

最终调整比例下调近6分并极其偏重期末(此条属于过去式,删除

说的满但做不到心里落差大(此条属于过去式,删除

实验文档不适合初学者的现象仍然存在,希望优化下实验文档,这点其他同学亦有提及 -1

课讲的好,老师的ppt和讲课确实算上是数一数二的了 +2

实验不错,最后完成项目后成就感很强,但是前几年也是一样的东西没什么改变,导致得满分的人特别多 前+1,后-1

最终得分 8

(最后修改于 4 0 复制链接

srds平衡下评分(yysy评课不应该年份越新评分占比越大才合理么)

只今年来看给分相比隔壁杀手不堪

课程本身比较辛苦,所以我在分数上不会亏待你们(x)

叔叔我啊,是真的要挂你们了

 

当然课是绝对的好课,与隔壁《C魔法进阶》更是天壤之别。不再赘述

套用隔壁评论区的话

想摸鱼去zql,想卷/学东西来lc

 

句号




老师年前撤回了成绩,现在快开学jwc出了,补个档

大家的总评都升了,有的甚至进了一档,学弟学妹们今后有招对付老师了^_^ (​假的这是个陷阱先杀手然后再调上来一点就有一堆人认lc老师干爹)(然而少院且没进档壬表示如此自己相当于是受害者hhh)

然而客观上给分还是平平,不过至少可以看出老师还是对自己的承诺有重视并采取了行动

故不太好意思再保持1分了www [后注:这时候评了两分]

 

提前doge

lc老师的编译原理和技术是我上过最棒的课,课程本身没有任何缺点,gitlab维护时间长是为了更好的使用体验,交作业前维护也很正常只是我没见过世面,页面进不去是我网络问题,服务器如丝般顺滑,不设QQ群是害怕QQ服务器出问题,实验3人合作高效又快捷,不仅如此助教还积极回复issue,issue奖励丰富又不严,每个实验都有测试脚本体验极好,是所有实验课之鉴,文档排版非常整洁,测试案例十分有效,思考题队友做得也很完美,实验难度适中,体验非常好。llvm找不出错是我眼睛不尖,套娃语法树画不完是我手不熟练,push老失败是我寝室没通校园网。

 

END


心情平复下来了;也不平什么衡给分了。按给分评分难免有情绪因素。现在这个分是给课程本身的

一分可能扣在某同学多次因上课吃早餐被老师点人批评,屡教不改,说明老师在课堂纪律上不够有威慑力(雾)

 

TRUE END

(最后修改于 4 1 复制链接
Yyf2333叔叔我啊,是真的要挂你们了.jpg(doge)

立即登录,说说你的看法

OPL 2018秋

三分给到实验和讲课吧,平心而论,实验够难,质量还可以,老师讲课看得出是用了心的。 好话说完了,接下来就是吐槽了。这门课程的实验难度远远高于平行班,导致你在学这门课时需要使用大量的集中时间,助教甚至给的测评也不完善,有时用助教给出的测评完全通过,最后却只能得到实验一半的分数。考试的话,lc非常喜欢在期末出一些它所谓的实验知识,包括但不限于肉眼看.ll文件。 总而言之,这是一门你所得到的分数与你所付出的努力完全不成正比的课程。你辛辛苦苦地努力了一个学期,最后却得到一个平均下调了7分左右的总评,学期中lc为了拉开差距设置了大量bonus,但是最后又把所有人的成绩下调如此之多,我也只能说呵呵了。 除开成绩,实验的弊病也不想多吐槽了,可能助教都是大牛,不太能理解一些没学过编译人的想法。实验文档不少的地方云里雾里,要完成的任务对于还没接触过的人而言,最开始几个小时完全不知所云,完成一个实验,即使是组队实验,平均花费时间也至少在30个小时以上,也可能是我太弱鸡了。 综上,如果成绩上有照顾我们一些,可能我会给更高一些分数吧。但是这恶心的下调简直是在告诉我:你的努力在我们看来不算什么。害,弱鸡不配有挣扎的权利。

4 0 复制链接
hejfnjeksmx 2020秋

给分很好!老师很敬业!助教也很敬业! 但如果让我重来一次,宁可去隔壁班被卡绩也不要再来这个班。

--------------------------分割线

我才发现自己被挂辽(

说一下不想再来这个班的原因。感觉这个课给我一种莫名的高级感。“你瞧,实验文档看不懂吧?/实验很难不会做吧?看不懂/不会做就对了,这才是高级”。

就先说实验文档,明明可以用很清楚,通俗易懂的方式讲出来的东西不懂为什么要搞的那么难,一度以为自己语文水平不好。助教难道不能将文档以一种初学者能够理解的方式去布置吗?我觉得编译的实验文档是我在科大读三年书遇到最晦涩的,我物理很差,但大雾的实验文档都没有这么夸张。这个实验文档我无法用语言描述。以后学弟学妹在上这门课的时候就能理解我现在在说什么。

再说实验,我不是来吐槽卷的。实验很难。难到从布置的第一天到交的前一分钟一直一直在焦虑在发愁。更何况一个实验没做完另一个就布置下来,焦虑感加倍。我的队友不是划水的,我们两个就是普通水平,踏踏实实做实验真的要了我们的老命了。我们也和大佬/中上水平同学一样,努力钻研文档,努力做实验,但时间就那么多,以我的能力真的不能那么好的完成。当时刚开始选课看评课社区说实验很难,不会做,还想,只要我好好学应该没有大问题。omg,真的有大问题!逃,赶紧逃。

我不反对说计院的实验就应该难,这门核心课就应该难的说法。但对不起,我就是菜,我不想太难。我来学编译只是了解基础的,不是要在上面钻研多深,还要学其他基础课。它本身和计组和操作系统一样的,但却成了我最头疼的课。本菜鸡当时觉得计算机组成原理难,但现在想想,相比这门课,那门课的不论是实验还是理论课真的恰到好处,难得地方也会让人有一种花时间就能搞懂的信心,但这门课对我来说,过于难了,学到后面就有点自暴自弃毫无兴趣。别骂了别骂了,已经努力了,孩子就是菜。

考试和作业都很正常。李老师有多好,上面的同学已经夸过了。每一届的助教可能不太一样,我不过多评价,没有意义。据说李老师开学会劝退,挺好的,希望学弟学妹认清自己,不要像我一样逞强。 

不欢迎喷。各有各的追求。我是废物,我追求快乐。

4 2 复制链接
hejfnjeksmxps:众所周知,评课社区评价并不全面,建议要选李老师课的同学先问问自己是不是大佬(躺倒)。
silence墙内的人想出来,墙外的人想进去(

立即登录,说说你的看法

Sqrti 2020秋

课程

主要是紫书上的内容,优化部分夹带了一点私活(菜鸡并没有看龙书,全靠紫书和PPT),期末的时候发现诚哥的PPT很香

本学期主要讲了词法分析、语法分析、语法制导的翻译、中间代码生成、运行时存储空间的组织和管理、独立于机器的优化、代码生成

作业

平时的Homework主要是紫书课后题,多数都有答案(一部分是龙书课后题,谷歌有答案)

助教作业给分也很好,只要不是错的太离谱都有A/A+

实验

实名反对楼上"萝卜萝卜萝卜"说实验文档不行(ta 貌似删除了),作为一个混了三年的菜鸡,自认为助教给的文档已经很全面了,至少放眼三年多的实验课,也就2020的CG可以与之媲美。不过“文言文”倒是真的有一点,第一遍读可能会云里雾里不知所云但一般来说读三遍就看懂了,且实验中遇到的问题都能在文档中找到,如果没有,那大可能是没仔细看文档(我在Lab3做类型转换的时候没看到助教给的文档,自己想了很久,后来才发现助教在另一个文档中都提示过了)  

请注意我的意思是:我赞同助教文档不便于理解阅读,但我并不赞同助教文档不全面

关于环境,不是很明白为什么觉得不用助教的环境除了问题还需要助教负责的,至少本人自己双系统完全按照助教文档配置的环境完成所有实验没有任何bug

请注意我的意思是:我并不赞同 由于采用非标准实验环境而导致实验问题说实验环境有问题,而若自己环境有问题,应去gitlab提出issue, 我相信助教和老师会帮助你解决的,而不是在评课社区说。

关于接口问题,确实觉得助教封装过度,但这一点应该在Lab5 bonus之前看不出来的,本人除了bouns看了一点llvm源码,改了一下助教的代码,其余都是用助教封装好的库做的,菜鸡确实认为助教封装的代码节约了我很多时间(

而且诚哥班实验设计非常好,循序渐进,不像隔壁班直接做一个编译器出来(

本学期实验内容主要是

(不好意思忘了一个,等晚上补)

  • 词法分析
  • 语法分析
  • 忘了2333
  • CminusF编译器
  • Pass优化

前三个工程量比较小,差不多半天+一晚上就可以完工。

第四个实验差不多花了三天两夜,但难度感觉也不算大,认真学相关知识,提前构思好逻辑,分块debug,主要是代码量过大,至于隐藏测试,个人觉得,很多隐藏测试自己其实都应该测得出来的,随便搞个快速排序就差不多了,虽然我由于漏了测!=导致一个bug没测出来。

第五个实验应该是我最肝的实验,因为确实对优化感兴趣,所以就去卷了一下bonus, 做了两个优化,bonus总耗时约七天

关于github参考,请问那些参考的同学,是真的“参考”吗, 如果认为参考就是大段复制粘贴别人的代码,那我无话可说,据我所知,有两组相似度有“96%”, 我们组也适当参考了github, moss查重结果是11%, 没有任何扣分(

总而言之我认为是一个很适合正常学生学习,练习的实验过程, 并且在练习完对知识会有更深的理解(尤其是Pass优化那里)

除此之外,诚哥还会考虑到学生的期中时间、天气因素,突然就延迟ddl(赶ddl星人狂喜)

考试

期中印象里比较简单,但要细心,特别是正则表达式那里(毕竟开卷嘛)

期末。。其实也不难,可惜我SLR没背,直接丢了10分。期末之前诚哥给了个复习PPT,差不多就是画考点了, 范围很稳,而且我一直害怕的翻译也出的很简单。然后全学期实验考了20多分(大概这个分), 好好做实验的话没什么问题。在见到期末卷子之前,我一直很害怕诚哥出大面积背诵内容,鱼的记忆完全背不住( 诚哥出卷真的很考验理解,水准高!其实整张卷子觉得需要记的只有SLR。

给分

作为一个期中不到平均分期末80的人,最后总评91。。。这到底是怎么给的分啊(诚哥,yyds!)

相关:作业几乎都是A/A+,实验是二人组,非队长,CminusF 88/100,Lab5不清楚,但bonus拿到了满分,没有卷任何issue, 上课没有回答

总结

这是第二门我在科大体验极其愉快的理论实验课,同时也是第二门让我觉得只要付出就一定有回报的课,也是我愿意写在cv上的第二个课设。 老师水平高且体恤学生,助教也都是神仙,还要啥自行车呢(

 

4 7 复制链接
Hades您可不菜orz
富哥们沃利贝尔看不懂文档管我吊事?毕竟我们高智商之间交流没有压力,你们这些低智商看不懂文档不配发表意见,只配被实名制反对!
Hades回复 @富哥们沃利贝尔: 鼠人remake了,希望下辈子能当个高智商
萝卜萝卜萝卜其他的我不做评价,环境上我也按照助教说的做了,但是不成我能怎么办呢???我也直接面对面向老师说了,还是不成啊。。。。谁让我是低智商呢
Sqrti回复 @富哥们沃利贝尔: 阿哲不好意思,我反对的是他说的“实验文档不全”,并不是“看不懂文档”, 我确实也觉得文档不好读, 但我确实不认为文档不全面
Sqrti回复 @萝卜萝卜萝卜: Emm说实话,我用VB失败后选择了第三种配置方式build了一下午成功了。如果您三种方法都尝试了且提过issue仍没有解决,那我深感抱歉。 P.S.我不认为这种阴阳怪气的说话方式是一种和平的交流方式。
萝卜萝卜萝卜回复 @Sqrti: 我从一开始就在说助教的文档让人读完似懂非懂,我没有说它不全(至于你说我删了,我没有删什么,也没必要)。助教文档好比是把书里的精华提取了出来,没有过程,对初学者不友好,但如果都懂,显然很方便。

立即登录,说说你的看法

Lyncien 2018秋

课程:

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

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

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

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

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

老师:

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

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

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

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

助教们:

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

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

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


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

4 0 复制链接

一点题外话:这学期开学不久,某老哥发现诚哥有点像陈睿。。。然后大家就开始叫诚哥叔叔

期中85期末83无bonus总评90,自己对于这个成绩还算满意,什么比例我不知道,可以看别人的评价,有拟合的

课程质量相当高(虽然我上课听得少,基本期末速成) 实验个人觉得真的设计的很好。难度考虑到组队后平摊的每个人身上其实也就那样。实验框架我看来很有学习价值 。 gitlab上的bonus和组队的队长加分我建议取消掉。没啥意义 。 另外gitlab服务器确实有问题。线缆日常被挖(虽然不怪叔叔)。无法公网访问确实是个问题,还不如qq群真的。

(最后修改于 3 0 复制链接
Yyf2333 2021秋

前面几位同学已经把课程的优缺点分析的差不多了,我就稍微讲一下自己踩过或者看别人踩过的坑的一些解决方案吧,权当做个入坑指南。

 

课程中使用的工具性质的前置知识:

  • Linux系统日常使用
  • markdown
  • git/gitlab
  • C++入门(C with STL, OOP)

 重要性自上而下依次递减,因为上课的时候这些知识的覆盖率是越往下越大,比如modern C++的特性助教有给一篇介绍http://211.86.152.198:8080/staff/2021fall-compiler_cminus/-/blob/master/Documentations/common/simple_cpp.md-,但是指望课上教你ls, cd, mkdir的用法不太可能。据我观察,相当一部分同学实验做到心态爆炸的原因是Linux太难用了,光是把实验环境折腾出来就已经裂开了。这边强烈建议把前一个学期操作系统课上用过的虚拟机留着,个人经验:一个稳定可靠的Linux环境至少对应20+h的工作量。

 

注意事项:

  1. 本课程肝度极大,想要躺平的人可以左转zql养老院
  2. 本课程的给分不管是在平行班还是在所有专业课里面看都不具有明显优势(我承认我这个8分打的很大一部分都是因为叔叔没有卡我绩,但是如果算一算单位时(gan)间(du)收获的绩点立马就没有性价比了)GPA++需求强烈的同学可以选择去zql班躺着然后卷别的课,或者去(H)班富贵险中求(doge)
  3. 本课程推荐配置要求极高(指需要有两个靠谱的队友,可以一起打男酮成行的那种(雾)),开学前找好队友之后分组的时候不容易搞的一地鸡毛
  4. 老师非常的有情怀,如果你也是个热血青年,来这个班鸡汤管饱,如果你经历了两年毒打已经变成了躺平壬且患有寄汤ptsd请慎重考虑
  5. 这个课点名。。。重修千万别把别的课叠上去

 

给课程的一些建议(不知道老师看不看得到)

  1. 服务器质量实在是过于拉垮,高新区电缆常年处于断与不断的叠加态,并且不支持公网访问(需求帖挂了俩月一点反应都没有),这边强烈建议买个云服务器,两个问题一次解决。真实案例:某巨佬搞的个人云盘本学期一次都没有崩,可用性比高新区服务器好114514个QQ(逃
  2. 希望能够给实验流程设置一个稳定的发布循环,实验截止前一段时间(比如一周)冻结框架变化,累积的修复和更改等到lab ddl之后再更新。每次做完实验以后还要提心吊胆每天去看看upstream有没有冒出什么patch是真的让人ptsd
  3. 希望把issue bonus取消或者至少提高一下审核标准,vscode远程连接教程这种CSDN搬运工帖就别算进来了,不然做了lab5的同学多寒心(虽然我没做)
  4. 实验文档可以更多考虑一下菜菜子们的感受,虽然本菜鸡看到“写了这么多了,大家都会了吧!”只会想到“淦,啥都没看懂,再看一遍”,但显然还是有人会感觉offensive

 

虽然以上列举了很多课程的缺点,但是我总体还是推荐李诚老师的课的。其实我个人最看重的一点是实验框架,它本身是一个经过了3年迭代,4000+行modern C++代码,拥有大量文档、测试和完整的构建系统的软件,非常适合拿来入门C++和软件工程。在软工课惨遭阉割的情况下,有一门课可以实际的拿出一个中等规模的软件系统给大家参考实际是一个很好的资源。另外前端部分教的regular expression、递归下降等技能整合进日常工作流还是很香的。

 

p.s基于一些对实验框架的不满,寒假正在尝试用Rust重写这个项目,目标是支持大部分C89(虽然才写了一个lexer QwQ),如果没有咕的话到时候会发到github上


更新:统计了一下整个实验的规模,仅做参考

整体:8000+行

all.png

文档:约2500行

doc.png

需要完成的部分:约1300行

ourcode.png

(最后修改于 3 2 复制链接
farmerzhang1我觉得实验框架的内存管理做得不太好qwq(好像是完全没有?)
Catoverflow回复 @farmerzhang1: 确实是几乎没有。有少部分地方用到了智能指针,但是其他地方直接不管了(和助教聊了一下好像是不同助教的实现问题)。反正我开 santizer 直接报错爆炸。

立即登录,说说你的看法

和其他几个评课差不多,虽然是能够理解分数下调的,但大家都是抱着“期末只占20%”的心态备考的...

好几个学期前就听说了这门编译课非常非常好,想象中的李老师是个“只要同学们学的好,就一定能扛着教务处压力给大家满意的分数”的超人,有点把这门课神化了,以至于出分前完全没想过会下调。

客观地讲,这门课的教案、实验、助教水平和态度都是一流,相信有志于编译且认真做lab5然后参加编译大赛再进李老师实验室最后越走越远的人会很有收获。但就我而言,暂时还是没有直接感受到这门课上李老师相对于别的老师而言能带给我的额外的东西。


想起一件不得不说的事情

期末最后一题考了实验,给了一段实验可能生成的IR代码,要求纠错。以后的同学一定记得要复习实验细节。

我实验都是认真完成的,但可能是因为完成得太早,考试的时候什么都想不起来了。做实验的时候都是靠报错纠的错,考试真的有必要把所有格式细节都记清楚吗...

实验题0分是不是代表我没做实验呢?


撤回后又加了一些分,不知道是调了比例还是直接奶

发评课前没有想过成绩会撤回的,发现撤回后才意识到老师可能看到了评课,有点哈斯噶系

之前忘记说了,李老师本身是个很有人格魅力的人,这种出分后因为学生的反馈而撤回的行为都是其表现。其实从issue加分上就能很明显地看出他很想鼓励学生间形成讨论的氛围。只不过学生们并非都和李老师是一样的人呀。

(最后修改于 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 当然也会上传),还考察了实验相关的内容,建议每次实验出分之后好好看一下自己出错的地方。

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

综上,给这门课点赞~

3 0 复制链接
2021秋

首先,这门课的实验就应该换到英才班去。

实验难度较大,而且有很多bonus,最适合上这门课的应该是英才班的巨佬们,而且完成了那么多实验最终结果却不尽人意是大部分人难以接受的原因。

其次,李诚老师上课质量确实挺不错的,很多很难以理解的地方都会重复讲解。即使上课时无法理解, 这门课超高质量的ppt在期末复习的时候也起到了很大的作用。(不得不吐槽一下上学期离谱的快1000+页全英文晦涩难懂的OSppt)。

再者,希望对编译方向感兴趣的同学不要因为我们这一年的评价而错过了一门很好的课(这门课是大家公认的计科质量前几的课)。

最后,吐槽一下bonus。希望明年lc老师可以适当调整bonus分数。对于低质量的bonus给0.5或者不给分。高质量的1分之类的。合理的bonus应该是对这门课更深的理解和对实验代码的改进,而不是对着ppt使劲找问题。

(最后修改于 2 4 复制链接
PtilopsisL据某个两个班实验都写了的同学说,H班编译实验更难。换了反而简单了
重新出分了,进了一档,谢谢诚哥,学弟们可以放心冲了。
………回复 @叔叔我啊,是说话算话的: 学妹们呢(doge)
回复 @ABCDE: 这学校还有学妹?(doge)

立即登录,说说你的看法

? 2021秋

这门课确实挺好的,对于我这种摸摸人但又想学到真知识的人来说。

先说给分,平时和实验占60%,考试占40%,所以平时好好干就肯定能及格。但没说期中与期末的占比,根据推测,期中估计就占10%,由于大家的分数实在是太高了,这种权重倒也不是说不过去。我期中考56(平均分有76,80分的人数最多),期末70都能3.3,简直不要太爽好吧。

讲课、作业、实验根本挑不出缺点(唯一的缺点大概是实验每年都一样(?)),这门课也可以称为C++集成之课,学会使用了很多C++的容器以及类的虚函数等等。作业和实验通过git提交,这下又学会使用了github(雾)

当然缺点也是有的,为啥gitlab只能使用校园网访问呢??在家就只能用屑wvpn了。。。还有莫名其妙的课堂互动加分(一次加0.5分,最多加5分,结果全被三人承包了),gitlab上含金量一般的分享也能加分,别人在课下指出过的ppt错误被另一个人分享在了gitlab上也能加分,强烈建议以后根据点赞量加分!!!

此外,这学期卷王基本上全跑这个班了(选课时zql风评很差),这个班又有很多加分(卷翻天了),并且隔壁zql班给分实在太好让人觉得很不公平(隔壁班是真的摸,zql这学期好像给了很多4.0,并且隔壁班不卷,有个室友直接认zql做爹了,我却只能喊lc叔叔)

2 4 复制链接
silence只能用校园网访问原因大概率是助教的服务器没有搞个公网IP
..........................回复 @silence: 公网 IP 的事情已经提了半年了,lc 说是需要审批,那个 issue 就放那好几个月。。。
Goat期中估计就占0% 我期中92期末70也是3.3
?回复 @Goat: 我其实是82,然后作业和实验基本全满吧(无加分)

立即登录,说说你的看法

Hades 2020秋

老师讲得很好,但实验真的太难了(也可能是我太菜),上个学期有一段时间一回宿舍就是做编译实验,严重影响了其他课的学习。此前其他课的实验都是做完就给满分,编译实验做完(通过助教给出的部分测试集)只能得基础分,还要再由助教进行测试来决定最终得分,艰难做完的实验,最后测试挂了一半的感觉实在不好。 推荐对编译感兴趣,想确实学到知识的人选这门课。

2 0 复制链接
kekeke 2019秋

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

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

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

2 0 复制链接
ldeng 2018秋

更新:看到这门课因为“给分不好”和“实验太难”被打了好几个低分,分降了很多,其实有点难受。(甚至有说是水军的,有点夸张。) 实际上,课程难度和课程质量本身就是矛盾的。这门课课程质量本身很高,这两年实验又做了很多改进(当然难度也增加了),必然会导致一部分想要划水的人无法遂愿,何况编译本来就是比较困难的内容(有人说不做编译器就不用学,那事实上大部分人CS三大课体系结构操作系统编译原理都不用学了,那不如去培训机构3个月速成java好了,有区别吗?)。这门课从一开始口碑就是“难但是好”,只能说选课前大家自己掂量掂量吧。 如果有想学但确实水平有限的学生,可以给老师和助教建议让给分平滑一些。(虽然我印象中这门课评分已经挺平滑的了。)


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

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

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

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

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

2 0 复制链接
Catoverflow 2021秋

(感觉这门课因为给分这学期被喷得有点惨)我感觉自己的给分还行,如果有同学要算一下可以提供数据:期中87期末87,实验分满分平时作业大部分是A+少部分是A(不知道有没有差别),bonus+2总评94。但是现在成绩又撤回去了可能是太多同学吐槽了。

开学前一天成绩又出了,上调到了95,看来李诚老师和 jwc argue 赢了(不是

---

上课的质量其他评论里已经说得蛮清楚了,这里就不提了,说一些自己碰到的问题。实验还是挺花时间的,实验文档有些地方也不够细(必须吐槽一下相当多的助教设计的 API 都没有任何注释,访问者模式刚开始也简单介绍就带过了(我提了以后助教加了一些描述))。导致有些地方不太能看懂,甚至参考了上个学期的实现才弄明白一些 API 的用法。不过这次实验队友比较给力,我自己的实验分拿满了,但是队友少了组长加分被扣了一点点(复查发现是我写的部分错了,对不住了 orz)。

Lab5 最后因为在考试周比较忙就放弃了,靠 Gitlab 回答问题拿了2分加分。我觉得相当困难的 Lab5 和回答问题加分有相同上限确实不太合适,不过因为平台全在 Gitlab,没有QQ群,靠这样鼓励同学互助的想法还是不错的。有些评论质疑回答问题太简单了,但是要知道这个加分在学期初就已经提出来了,平时大可以用这个简单的方法来拿到分数,马后炮我觉得没有必要。

总的来说一学期学下来还是比较累的(不过主要是因为妮可的课程设计,编译课的一些前置没有单独讲导致编译需要一揽子包了,比如文法),而且看评论大家都好卷啊2333(不知道是不是幸存者偏差)。

(最后修改于 1 0 复制链接
tbq 2021秋

老师讲课很好,实验也很好,就是最后总评计算有点迷惑,之前是说期中期末分别占20,但是最后出分比算出来低了六分,期中比例应该很低,难受😭

嗯...诚哥似乎撤回了,希望能改下比例吧

虽然就上调了两分,但是诚哥这波操作很舒服,唉呀这加g多是一件美事呀🤤

(最后修改于 1 0 复制链接
2018秋

相关:今年几乎只看期末成绩和加分,实验必做部分lab1-4全满,期中90+,期末由于考试密集取舍之下没管编译。最后期中几乎不占比,总评爆炸。

吐槽:考前还说会按照之前比例给分,让同学们相信李老师的人品,然后结果就是全看期末?不能理解。同时还给一些莫名奇妙的issue加分,指出显而易见的错误和csdn教程搬运也能加分,每处加总评0.5,流汗黄豆。相比之下,做lab5的同学在期末周花费大量时间最后普遍也就加2-3分。

总的来说李老师讲课不错,整个课程学下来还是有很大收获的。不过,感觉不如zql ... 划水&给分。

那就平衡一下两个班评分吧,不代表实际评价。

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

同学反馈之后修改了分数,基本都上调一个档,可以可以。

 

(最后修改于 1 0 复制链接
farmerzhang1 2021秋

补充一下21年的实验,lab1-4和去年一样,lab5为选做实验,提供4个赛道(后端代码生成,更多优化,语言拓展和诊断信息),考试结束后线上答辩。

(最后修改于 1 0 复制链接
猫猫cat 2021秋

弱智服务器

学习体验极差 

---

TMD期末成绩出了查个分又在这恶心人是吧?100多人查分都能把你这服务器冲烂?

没那个实力就别装那个逼,老老实实用QQ,或者学校的BB平台就行了。非得给学生喂屎是吧?

喂屎其实倒也没啥。最让人反感的是一边喂一边说屎是香的。

 

对于 https://icourse.club/course/14088/#review-43274的回复 由于超过500字,放在自己这里。

 

个人观点,缺点一二就是一件事情的体现:傲慢+没有自知之明。有的人真的是觉得自己牛逼上天。嫌人家QQ这个那个,你那个小破服务器有QQ一亿分之一好用?讲个实验文档觉得自己牛的不行。难者不会会者不难的道理都不懂也配来教别人东西?说实话就计算机这个专业我没看到任何东西是有本质性难度的。除了算法设计比较需要发散思维,其他都是跟儿童百科全书一样的。有的人就是自己看了两页百科全书就在别的小朋友面前吹的不可一世了。不知道优越感哪里来的。会用个git就优越了?这东西任何一个智商正常的50岁大爷都能学会好吧。工具性的东西比别人多会一点真的不知道有啥好优越的。另外别把锅推给电缆,自己做的决定又推锅给别人。你投资股票赔了你咋不赖国家呢?真尼玛傲慢到让人恶心。计算机行业的发展靠的是开放共享,靠的就是让傻子也能编程,别说中科大的同学们都不是傻子,就是都是傻子,你也没啥好看不起傻子的。别抱着你那学究式的傲慢来恶心人了。C为什么胜过了LISP?JAVA为什么大行其道?我劝有的人还是自己好好想想吧。另外,你也不配有学究式的傲慢好吧。你教给别人的东西要是你发明的,你写文档说非常简单。我服你,好不好?自己当个二道贩子还牛逼哄哄的。望能看到这段话的话好好想想。Linus竖中指是因为他配,你配吗?配钥匙去吧你。

(最后修改于 1 3 复制链接
ccclll
..........................同学你好,你是用的学校 WVPN 吗? 你可以试下学校的回校代理,似乎是还可以的,服务器好像没啥问题的样子
Yyf2333刚出成绩那会儿确实卡过一阵,过几个小时去看好了

立即登录,说说你的看法

照以往的习惯,上来应该是:“先说重点,给分很好。”

但显然,这门课的总评和平时付出的功力严格正相关。

课堂:

老师每次都会提前到教室准备 ppt 和 bb 在线课堂。讲课逻辑清晰、有节奏(很少犯困)。

ppt 做的很精致,最后复习的时候可以采用 PPT+ 紫书 套餐,真香。

作业:

一周一次,老师推荐使用 markdown 文档撰写作业内容,并强制要求提交在 gitlab 上。

作为妮可计科人,感觉工具链的学习和使用还是很有必要的,在此感谢诚哥督促我练习 git

实验:

作为本学期总评占比最大的部分,实验部分当然需要你付出一定(大量)的精力啦。

前三次实验都比较简单,仔细阅读助教写的实验文档,结合课上讲的理论知识,按照要求一步步来即可。

有的时候可能会看不懂实验文档要求我干什么,此时我就会去逛逛 issue 区找找灵感 + 再读几遍文档 + 和同学讨论一下,实在不行可以自己提 issue(在此感谢助教,有次我提了 issue,十分钟左右就得到了助教的有效回复,助教辛苦了!希望诚哥能给你们加鸡腿~)。

第四次和第五次实验是要求组队完成的。

在这里提醒大家,一两个靠谱的队友很重要!

不过如果队友比较划水的话,你可能会收获更多知识和能力(笑)

小小的建议:希望下次编译组队实验之前,老师能给一些 team work 的建议,给学妹学弟们节省一些进程间通信的开销 2333

最后实验五有额外的选做内容,做了的话加分会直接加在总评上(最多加两分),个人感觉这个加分设置的还可以,因为加的不多,可能也没有那么卷吧(我猜的

考试:

期中考试侧重前三章的算法练习,大家考试之前一定要多写点题目,别像我一样,考后诸葛亮。

期末同样侧重算法练习,另外考察了实验的内容,可怜孩子实验忘了看,过了一个寒假之后都忘得差不多了orz,大家千万不要学这个粗心的学姐啊啊啊啊

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

最后的最后:

编译原理作为计算机系的专业课本来就是一门具有挑战性的学科,在学期内占用的时间多一些也是可以理解的,讲真我大三上学期感觉真的只学了编译和算法,其他科目都是考前速成的 orz

总评给的也是合情合理,真的和你平时的工作量有很大关系。不过如果单论最后成绩横向对比的话,你确实可以在隔壁班更轻松的获得同样的分数,但相对应的,对编译这门课了解的深度也随之减少啦~

所以,想要挑战自己 || 对编译感兴趣 || 想锻炼自己的动手能力 && 文档阅读能力 的同学可以来选!!!

---------------------表白助教!-------------你们值得我尊敬!-----------------

 

1 0 复制链接
Misaki 2020秋

说实话这课考试部分我都是用HIT的网课速成的,大三上期确实有点放松了。

诚哥这门课我想说说实验部分,首先实验设计的都很棒,对于我这种水平非常具有挑战性,在这里感谢我的两位队友兢兢业业与我一起完成了所有实验,并且基本都得到了满分。实验会教你使用cpp,git,markdown,gdb等非常好的工具,就算以后接触不到编译原理,这些东西我想都会在计算机的学习道路上一直陪伴我。但是实验任务量远远大于zql老师班,不过助教还是非常尽心尽责,上次看到这么尽心的助教还是我的光原课和大一还在数学系的时候上的淑芬A1

总体来说真的很不错,给个9分吧!多一分怕骄傲啦

1 0 复制链接
yusanshi 2019秋

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

 

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

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

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

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

1 0 复制链接
水平价 2019秋

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

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

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

1 1 复制链接
吼猴我要选这门课了orz(我是数院的),希望学期结束时我不会后悔(不过已经做好了在这个过程中不断后悔的准备……

立即登录,说说你的看法

daiaqswde 2018秋

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

 

1 0 复制链接
Don 2018秋

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

1 0 复制链接
Indigo6 2018秋

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

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

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

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

1 0 复制链接
Ursa_polaris 2018秋

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

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

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

1 0 复制链接
XXXXX 2021秋

这门课课程内容,实验设计,教学水平都是很高的,实验难度没有想象的高,倒是平时作业比较折磨。最后给分没有按照开学承诺的比例,但是整体来说还可以接受,推荐想了解编译相关技术的同学选修

0 0 复制链接
Goat 2021秋

实验没有之前说的难,基本都是满分。期中92期末70最后83,大家看着办吧。

lc与教务处battle成功了变成86 连夜端正态度

(最后修改于 0 0 复制链接
vevevev 2018秋

李诚老师上课nice大家都夸过了我就不多说了,这门课我收获最多的其实是实验部分。

实验是真的耗时间

本人没有项目经历,没有参加额外的比赛,这门课的实验算是第一次写这种大项目,前两三次的实验室体力活,到再往后的其实刚开始会一筹莫展,想通了会很好写,改bug就是痛并快乐着。学期结束觉得自己确实多会了不少东西。

最后总评3.7,可能是期末考炸了还不自知。(虽然可能考的不好,但是考的都很基础)哦对,没有写过优化的bonus,也没卷过issue,虽然没有感受到诚哥的给分像大家说的那么好,但是这门课真的体验很nice了,不说绝对,至少老师和助教要好过我上过的90%的课,还是十分推荐的。

 

0 0 复制链接
HenCerbin 2020秋

lc老师人很好,上课体验极佳,内容很充实,强烈推荐喜欢靠听课学习的人选。

作业基本每星期都有吧,都是课上讲过的东西,都搞懂了期末基本无问题。

实验量挺大,难点主要在于搞懂到底要做什么,有什么可以用的。一般做着做着就会了。lab4主要难在测试和团队协作,导致某些极端情况没想到而出错。lab5就是卷王自由发挥的场所了,反正我是没做额外pass。

期末考试占比很少,简单的复习一下就可以了(由于种种原因所以只复习了一天)。理论部分都不难,实验部分因为有涉及到非自己做的部分可能略难,不过也能猜个7788。

总而言之这门课还是很值得选的。多亏了编译实验,让我写CV的时候没科研经历的时候就用这个拿来凑数。

 

0 0 复制链接
guch8017 2020秋

本学期最喜欢的老师,上课讲的很清晰,教学方式也很喜欢,是理论+实验的方式。不同于其他课程,这门课实验要求较高,按开学时的说明占比也较大。实验为利用各种工具链,从词法分析、语法分析直到生成简单优化后的LLVM IR指令,交由llvm来生成最终的可执行程序,收获很大。

考试不会死扣概念(至少期中如此,甚至是开卷的,与隔壁死扣概念的计网形成鲜明对比),这点也比较喜欢。

疫情原因,这门课期末还没考,考完再来修改

0 0 复制链接

李诚

教师主页: 戳这里

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

李卫海 7.0 (2) 2019春 2018春...
张昱 6.2 (10) 2021秋 2012春
郑启龙 5.8 (30) 2022秋 2021秋...
未知 2016秋
陈意云 2011春 2007春...
陈意云, 张昱 2010春 2009春...
李诚, 吴思 2021秋