选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
课程层次:专业核心 | 学分:4.0 |
本课程是计算机科学与技术专业的专业核心课,目的是让学生对程序设计语言的设计和实现技术有深刻的理解,对和程序设计语言有关的理论有所了解,并能把本课程讨论的概念和技术用到软件设计和开发中。本课程介绍编译器构造的一般原理和基本实现方法,其内容包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等部分。本课程在介绍编译器各逻辑阶段实现技术的同时,强调形式化描述技术,并以语法制导定义作为翻译的主要描述工具。作为原理性的课程,本课程介绍基本的理论和方法,而不偏向于某种源语言或目标机器。
郑启龙老师讲课思路清晰,能讲很多细节,课程内容覆盖全面。PPT内容丰富,包括有趣的形式化。这门课的教学质量受到了褒贬不一的评价:有些学生认为老师讲得很好,能清晰地解释编译原理的核心概念;但也有部分学生感觉课程内容繁琐,包括一些阴间的C语言冷门操作(如指针、数组、引用的复杂声明等),让人难以招架。
作业总共有9次,覆盖了所有考试知识点,但质量层次不齐。有些作业是常规知识的运用,但存在计算量大和复杂难懂的情况。例如,某些作业需要画巨大的语法树,或者涉及到复杂的C语言声明。助教会发布作业参考答案,但答案质量一般,有时发布较晚且容易出错,需谨慎参考。
实验主要是PL0编译器的扩展和完善,有一定的工作量。实验既包括实现新的语法和功能,又涉及到大量的代码重构和调试。学生对此评价两极:有人认为实验有趣且实用,提供了实际编译器实现的机会;但也有人觉得实验代码质量差、要求不明确,经常变动,导致实验做起来非常混乱和费时。
期中期末考试普遍反映有难度,尤其喜欢考复杂的C语言声明和指针操作。期中考试题目相对基础,但题型和知识点覆盖广泛。期末考试题量不大,但某些题目非常具有挑战性,要求学生对细节有深刻理解。闭卷考试,重点考查学生对DFA、文法、翻译方案等基础知识的掌握情况。总体而言,考试题目新颖但合理,有一定挑战性。
给分整体较好,郑启龙老师本人负责改卷,各方面都比较大力奶分。学生普遍对最终成绩较为满意,且部分同学认为课程给分比较慷慨。某些学期的优秀率较高,调分幅度明显。即使对课程内容较为困惑,完成作业实验并参加考试,大多数同学都能得到不错的成绩。
郑启龙老师的《编译原理和技术》具有较强的理论深度和广泛的知识覆盖。课堂内容有难度但细节丰富,作业和实验任务有一定挑战性但总体可完成。尽管助教工作较为敷衍,参考答案质量不佳,学生仍能通过老师的耐心教学和开放答疑获得很好的理解。给分较好且课程提供了实际编译器实现的机会,仅推荐给基础扎实且能承担较大工作量的同学。
强烈建议大家选这个课! 郑启龙上课思路清晰,会说中文,PPT除了知识点其他都很有趣。 助教也很负责,百忙之中还帮我们建了一个QQ群,发了准确率还算比较高的答案。 考试题出的非常新颖,非常有挑战性,强烈建议gpa太高的人来选!(考试很合理,有许多常用的c语言声明,学过c的应该都会
这试卷做完了折寿。
出分了,没有调分,这门课平时的作业、实验以及最后的考试的题目特别烦,还特别喜欢考指针,数组,引用。助教在这门课里没有发挥过任何作用,要么就是半天不回复,要么就是不知道(能回答不知道对这门课的助教来说已经是相当罕见了)。
总而言之,虽然lc班作业多,实验量大,但是好歹助教老师负责任,能换去lc班赶紧去,别在这门课找罪受。
最后放张图:
课上到一半先来吐槽一下给出的PL0的源码
我从来没有见过那么那么烂的代码
上来大手一挥就先乱开一堆全局变量,并且瞎命名一通
我从来没有见过这么反社会的命名方式
先乱起个变量名然后在旁边注释其意义是哪个星球的做法????就好像我数学分析考试证明题,把过程完美写下来后再故意用笔把过程全部划掉只留个结论一样?????即使是刚学程序设计两三周的人也不会用这么nt的方式来命名
各函数各过程中还有各种magic number冒出来,以及各种不明意义的局部变量,下划/驼峰混用(写这个代码的人居然还知道有这种东西)
驼峰?下划线?不用!就是玩儿!
数都数不清的全局变量直接把整个代码结构弄成了一个笑话(这个小小的getch就涉及了6个全局变量)
我不知道是谁写的代码,这个人从此以后应该别碰电脑,先回去好好把编程规范给学一学。
考完出分后来更新一下回答,首先对实验的评价不改变(答辩永远是答辩),
实验整体工作量其实很低(一个人大概3-4天就能完成所有指定功能(前提是你熟悉了他给的屎山代码的整体结构)(实验没有Bonus points),我们组的就基本都是我顶着新冠写的,大概3天不到,最后答辩让组员念我写的doc)很水,收获基本等于没有
小测开卷,基本照搬往年题,就算现炒现卖也基本没啥问题.
期末考试出题整体较为正常,翻译/制导,DFA, 三地址代码改写,流图之类的(虽然做起来还是有点不舒服,只能甩锅复习仓促(1天))第一题最后做不出来瞎写,然后语法翻译/制导那大题也没有复习深,最后一问10分写栈代码直接摆烂留空。x86汇编只会最后的return 0,其他瞎写(10分),小测预计自己差不多是满分,上上下下算下来最后居然还能给到87分的总评,可以说给分是相当的不错了
总结:想学东西请去隔壁,想躺平/摸鱼也能拿不错绩点可以来(当然也许明年就不是这样了)
int a[]={0,{1},{2},3,{4},{5},{6},7,{8},9,};
int b[][2]={0,{1},{2},3,{4},{5},{6},7,{8},9,};
int c[][2][2]={0,{1,},{2},3,{4},{5},{6},7,{8},9,};
同学们李诚班走起,没什么好说的
助教=没有
考试十分离谱
后悔当初室友叫我换班我没换
占坑
打完游戏开骂
来晚了,该骂的都被骂完了
总之,大家别选,lc/zy哪个不比zql好!
(考过期末了,出分之后看情况更新)
我实在忍不住要吐槽一下。
这种放羊式的教学氛围对我这种凡人极不友好。
郑老师人还比较亲和,有问题可以当面或者发邮件问他,我问的很蠢的问题也会回答。
(ps.老师课间不下课,上课建议少喝水)
种种原因,这是我当前体验最糟糕的一门课。
期末考完更新:
听说给分也很阴间,优秀率只有20%
哥们期中之后可以说是一点没学过,现在复习runtime感觉就是在吃shi,傻逼助教给的答案估计对的还没我抄的那份答案多,cnmcnmcnmcnmcnm
虽然我学的是一坨屎(考试前可以说约等于没有学过),考试考的也是一坨屎,但还是整理了一些资料供之后像我一样的“摆子哥”来选zql。
https://github.com/Wloner0809/ustc-course-resource/tree/main/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86
链接里包括了:
1. 去年、前年、大前年zql班的考试题(?大概是这些年份,记不太清楚了。考试题来源是zql在最后一节课小测之前点击又关闭对应的word文档然后我看网课偶然发现的,不过没答案(所以对我来说有没有往年题没啥区别。
2. 其他的一些考试题
3. 所有hw的答案(祖传作业狠狠滴抄)
4. 一些复习资料
再放两个我自己抄作业用的:
1. https://github.com/lyc0930/Compiler-Homework
2. https://blog.csdn.net/weixin_56462041/category_12060882.html?spm=1001.2014.3001.5482
这门课槽点很多
### 实验槽点:
zql又把他的古董PL0翻出来。从主页上下载后打开,首先映入眼帘的便是"void main"产生的警告;稍微看下代码,头文件直接定义了几十个全局变量,变量名几乎不含元音字母,净是些ll、tx、kk这样的,比Linux命令还抽象;实验要求十分模糊,大家都不知道标准是什么,各做各的。检查时也是天马行空,前边的10组在讲台上做presentation & 回答zql的当场提问,大概要二三十分钟;后面十几组时间不够了,直接去他办公室不到5min检查完……自己检查进度严重落后于群里讲的,心里没点数吗
那么为什么今年不做mini python了呢?
### 助教槽点:
TA如同虚设,除了收/批改作业外没有任何实际贡献。改作业的水平也很值得怀疑:语法制导翻译那次作业我乱写的,助教应该是没仔细看,直接给打了10分(滑稽
课程群里同学问的问题,要么压根不理,要么回复“我也不会”云云。公布作业答案往往很晚,并且全是手写+拍照+胡乱拼接,搞得乱七八糟。有时候作业忘带了,询问补交事宜,要么几天后才回复,要么就是问两遍才回复/手动狗头
检查实验时已经结课,助教和老师也是一样不操心,上课教室被占做考场都不知道,净耽误时间。有个助教当时还在偷笑,我???
在群里问起实验相关的内容,除了检查的ddl以外,助教全部是一问三不知。和隔壁班众耳熟能详的大佬学长助教一对比,差距过于明显。
### 考试槽点:
考试前两题和隔壁班是一样的,很正常的词法文法题。从zql自己出的第三题开始就搞那些阴间玩意,int c[ ][2][2]={0,{1,},{2},3,{4},{5},{6},7,{8},9,}; 让你把第一个[ ]里面的数字填上,然后下一问又让你编译出对应的初始化汇编代码。且不说依他的要求,团队实验中有些人根本就没接触过这些,就算你自己做了数组初始化那部分的任务,你也大概率不知道这种奇怪的c魔法到底是啥意思,那要怎么写?作业布置了那么多 x86 汇编不考,非要考这个,就这样卷面一共 20 分,对应总评 8 分直接没了。无话可说,只能提前给老师拜个早年了。
老师带这门课已经很久了,还能搞成这样我是没想到的。
怎么这学期还没人评?
md zql
自己给的runtime汇编,函数调用前面不减esp,后面莫名其妙把esp加个数,不分配空间,你家跑步不出汗的吗?你家拉屎不脱裤子的吗?
sb zql
实验答辩的时候乱打断别人展示,甚至锐评:你们为什么不在运行时显示临时变量名,tm你家CPU运行目标代码之后还有变量表是吧🤣🤣。哦我明白了,原来是假想一个虚拟机来运行,原来变量表是全局变量,这样我们运行的时候也能看到变量表啦!是我浅薄了哈哈哈,感谢zql交给我这种别样的编译原理,让我之后跟别人聊起的时候独树一帜!用心良苦啊zql!龙门🙏🙏🙏
总评 87 我真是赢麻了哈哈哈哈哈哈哈哈哈哈哈。龙门!
给分就那样,并且学不到任何东西。
如果你像我一样完全对编译不感兴趣,只想混过这门课,并且不太在意GPA的话,那也欢迎来,至少可以刷新你对计科老师逆天程度的思考下限。
年少时诋毁zql
成熟后理解zql
出分后赞美zql
期中先占坑发个截图,坐等后续处理
总评出了,由于zql连年差评,导致今年班上大佬都润去隔壁班了,导致今年确实是摸到不行,给分确实不错;总之zql人讲课喜欢边边角角但今年期末没考(可能由于期中被举报导致不敢乱出题了?),实验难度下降不少,今年所说的40优秀率也可能真实现了,看来是有逐渐变好的。而助教我仍持否定态度,ta们确实不行,完全是摆设,如果想选的话建议多自学或与同学交流,总而言之在这学期的课中还算中等水平。
大三夏令营要面试自我介绍了,才发现zql好事做尽,g有了项目也有了。我为我犯下的罪忏悔,龙门!
坏了,听说夏令营面试考高绩科目,这编译咋复习啊,再扣两分
反转了,没考,给他加回去
这篇点评给想要选(或不得不选)郑启龙老师课的同学看看好了,看了一圈下来我好像是给这门课评分最高的,虽然我自己的得分也有点低于预期。这门课不好的地方其他都说的挺清楚的,还是建议换李诚老师班。
我觉得郑启龙老师水平还是可以的,能把很多东西讲的清楚。但是在他的课上不能开小差,否则马上就不知道他在干什么了。。郑老师很多事情都是亲力亲为,PL/0实验的测试样例,检查什么的都是郑老师自己一个人做的,没检查完的好像还专门去了他东区的办公室检查,我觉得还是很负责的。
但是这门课的助教我真的一分都不想给,平时作业没有答案,直到要考试了才慢悠悠地把答案上传到群里,而且有错误(都是助教自己写的)。平时习题课也没有,快要期末考试了才赶忙安排一次习题课,并且准备的也不充分。平时分数、实验成绩统计那更是想都别想。很少随堂听课,甚至一个学期下来我连哪个助教叫什么名字都不知道(和顾乃杰老师算法班的助教形成鲜明对比)。在科大读了2年半,我还真没见过那么轻松的助教。
这门课有期中考试和期末考试,期中主要就考文法、语法和翻译,应该算是比较套路的东西,感觉自己考的还可以。期末难度比较高,考的很烂,只能说没好好复习。
刚出分来评。 结论:强烈不推荐。 1、习题课几乎没有,整个一学期就两次,助教也超级不负责,期中成绩到期末还没出,群里提问大多数也就装死。看助教回复期末卷子还是老师改的?不知道是老师第一次授课还是什么,感叹助教的工资拿的真容易。 2、实验要求反复横跳。老师给了一个祖传的PL0文档,给了乱七八糟的一堆样例。样例和文档甚至还有冲突,最可笑的是都开始检查了居然还能临时追加样例的?这实验要求就不能一次性给完吗?离谱。 3、作业机械暴算。作业都是常规知识的运用,最大的特点是暴算,计算量爆炸。和考试特点一样) 4、考试题目离谱。非常喜欢考C语言知识,建议下学期老师带程设。期末两道大题考数组声明,就是那种可读性极差的数组声明。纯粹就是为考试而出题,如果你C学的好就全对,学不好就全错。而且非常喜欢连环题。 5、几乎不调分。期中95,期末估计75-80(错了两个pl0)最后总评90
实验毁人心态,作业全是暴算,考试极其刁钻,总评一点不调。您各位不左转lc班等什么呢:)
gnj出分了,必须再给zql加两分,有gnj这种亲自查卷挑刺扣分的杀手才更能承托出zql亲自批卷大力奶分的好啊,龙门!
占坑 先放个截图
学期开始从zy班run来了zql班,因为lc班满了
先说结论:我期末回来把zy的1分改为了7分,zql的6分改为1分
zy:
实验占50%,值2分,因为还是可以抱H班大腿;
作业占10%,大腿给满;
期中期末占40%,值10分,开卷,可以带电脑,据室友说体验极好;
可以翘课,加分,综上7分。
zql:
实验占25%,值1分,因为延期了两周,但比不上大腿;
作业占15%,往届大腿给满,但有非经典题目改了,小扣分;
期中占20%,值负分,半开卷,全是往年题,有错题并且到最后没指正,考试随机游走选幸运学生乐呵乐呵,考试后在班里大骂(并且抨击开卷制度)并要同学写考后感想作文上交。后迫于压力重新抽一节课测验,但至今未说期中是否作废。测验闭卷,大半期中题小改。
期末占40%,值0分,闭卷,全范围,参考上述;
课上点名提问,回答不出来会让你站到气氛开始肉眼可见地微妙;
综上1分
个人感受
编译原理本身是一门难课,但是zy想把你教好,zql ██ 有特色
啧
期末出分了,连夜给他加两分
又是一年出分季,听闻新评分全是9+,诧异之余全感理所应当
然后想起自己整理面试成绩单时,zql编译是我分数最高的一门专业课,尽管我学了依托答辩
就是.....感觉非常内疚........赶快改评分忏悔
希望龙原谅我无知时的诋毁(合掌)
大家一定要选zql啊!只要期中期末人到了就行!
如果你是龙,也不好(
学东西的话建议别来,今年来看貌似想拿高分也被卷烂了,欲译丁真:鉴定为请文明用语。
上课:不知道。不点名。记得前几周坐在走廊旁边农药,结果下课的时候被老师随机游走 gank 了,所以后面就不去了,改在寝室打了。
作业:似乎每年的作业都是在前一年作业的基础上迭代。经常发生在 GitHub 上找到答案却又因为题目稍微改变而不能无脑抄、找到了三份答案但全都不一样结果自己写出了和三者都不同的答案之类的事情。似乎每两三周布置一次作业,每次大概要花三四个小时抄+消化。某次作业让画一个巨大无比的树,我就拿着 PowerPoint 画了一晚上。。。然后被助教载入习题课了。(当然,习题课也翘了
实验:一个大作业,今年是在基础 PL0 的基础上添加一些功能,2-5 人组队,实测整个实验(包括重构框架的时间,除去写报告的时间)共花费了我 28 小时,如果多人合作的话可能总时间会更长。具体情况可以看我的仓库 https://github.com/txtxj/PL0-Compiler 。另外在这个仓库的 frame 分支下有我重构后的框架,可以给学弟学妹参考。
考试:有一次期中小测,可以用电子设备,直接狠狠滴抄。期末闭卷,五道基础题,卷子发下来还以为漏页了。直接提前半小时交卷了。
给分:今年似乎非常奶,平时作业 59.5/60 + 小测满 + 实验 48.8/50 + 期末半天速成 = 93
收获:写编译器还挺有意思的,尤其是当发现实验的某个要求不是 LL(1) 文法能做到的,于是想到一个奇奇怪怪像 LL(2) 又不是 LL(2) 的方法解决掉的时候,还是蛮有成就感的。
吃得屎中屎,方为人上人!
本来想给9分,毕竟卡我g了,但是人要知足常乐,就这样吧,十分!
(前提是你心甘情愿食雪
至于雪是什么,评课社区往年评论已经说的很清楚了,考虑一下能不能接受,能接受就来,不能接受就去lc
我单方面宣布zql就是摆哥的神!昨天刚考完期末考,zql的试卷:五道基础大题。1.写正则表达式和最小DFA 2.写文法的LR(0)项目集 3.写文法的翻译方案 4.写一段x86汇编 5.写一段三地址码
第一题还是原样抄习题集的。
而隔壁lc班就不一样了。十多道大题,据同学描述延长了半小时还写不完。听得我十分害怕(开心)
上课方面倒是一般,因为ppt做的很烂,一般都是自己看书学。
作业十分的魔幻,好在次数不多题量也不多
实验只有一个大实验,又一摆哥福音。隔壁lc和zy班实验嘎嘎多嘎嘎难写,室友坐牢的时候我看着笑啊(不是)
总而言之,如果不想学到很多东西不想卷想过轻松日子的,赶紧选zql
我是从lc班自愿润出来的,没有后悔。给10分多少是想拉一下分,但8分我想还是有的(主要是我认为在编译原理这门课上,其他老师也不是啥善茬)
先说总结,zql的问题就在教的某些东西过于sb,但别的地方还可以,人没啥问题,甚至可以说是非常用心教学(有一次下课了我还在座位上捣鼓电脑,zql下来问我是不是有什么没搞懂的),综合往年同学的评价,给分很好。
首先,也是被诟病最多的,zql的阴间c语言知识(应该能在其他人的评论里找到,这里暂且不列)
1.数组初始化
2.杂糅的声明
3.i++,++i,++*i++等
说实话,这些东西花点精力,还是挺好搞的,第一眼看上去确实晦涩且愚蠢,但其中逻辑还算简单,写写代码看看输出差不多就能弄懂。如果他平时不讲,考试突然来这么一出,那确实nt,不过1和2都是作业题了,3出现在小测里,不知道课上有没有讲过。本学期期中小测考了i++ ++i啥的,期末考了数组初始化,弄懂了就是送分,如果他明年突然在考试里塞新的阴间玩意那当我没说
其次,两次小测的事,每次小测占用两节课,除了上面说的那些个c语言知识,其他东西大都很基础。三个黑点:
1.直接找往年卷出来测(本人非受益者)
2.往年卷错题还照样搬来(最后解决方法是所有人该题全部满分,但有些人被耽误了时间)
3.本来说开卷,最后闭卷(第一次小测是开卷,考了书上原题,zql语:“你们多刷点题不就是送分吗”,私以为这话确实nt)
但是,体感小测是没怎么算总评,zql大概真的只是想小测一下,期末结束后我找zql问小测的事,他说你别管了,作业交齐就行,不知道是否有什么暗示。本学期期末和小测非常之相似,是一个用来熟悉期末的好机会。
关于期末:题目非常之基础,除了某题让补全汇编代码完全不知所云。
关于平时作业:第一次写的时候顶级折磨(尤其是runtime的汇编代码部分),但复习时认真看其实能看懂,只能说自己平时太摸了。zql的作业似乎几年没变过了(悲
实验部分:本学期只有一个实验,分组做,每组3人,包含PL0和Yacc。
关于pl0实验:个人认为,这是本门课程中最有意思的地方(除了数组初始化部分)。本学期Pl0实验要求较低,难度感觉也就这样,我花了两天时间一个人完成了(记错ddl了,效率急速飙升)。期末复习的时候(虽然最后没有考)仔细看了一遍Pl0,虽然并不算先进,但其中能看到所学内容在代码中的真实实现。写实验前我把所有代码注释了一遍,受益匪浅。
但是:pl0里让实现数组初始化属实有些愚蠢,加上错误检测的实现,代码量巨大无比。如果是顺序读入数组并同步初始化,我认为是无法实现c的某些功能的(int x[2] = { {{1}, }, {2} }; 如果按我的实现方法,即顺序读入并初始化(如果我没理解错,这也是zql说的方法),读入第二个右大括号以后后面就自动补0了,2是一个多余的数,但在vs里这是可以通过的。当然也可能是我的方法有缺陷,欢迎交流),幸好也没出这样的例子。初始化部分我写了整整一天,并不住感叹这就是纯纯的nt,知道怎么初始化不就好了,为啥还要我自己实现。
关于yacc实验:不属于我的分工,但看舍友一天晚上就弄完了,应该是非常之简单的。
关于教学:上课没听,不做评价。ppt我觉得相当不错,简单易懂,没必要去找隔壁lc的(隔壁gitlab也时常上不去),个人建议是在属性文法及其之前的部分结合课本看,之后以ppt为主(数据流分析和课本可能有些出入)。有些人可能觉得zql班学不到啥东西,我不做评价,但书上有的ppt都有,我想该讲的大致也讲了罢。
给分:期中(小测)感觉不太理想,估计80上下,作业并非全部满分,实验正常通过检查,期末的汇编代码补全不会(大概6分),总评94,体验奇好,当然也不排除是因为卷怪都去lc班了。给分标准:期末40%,实验25%,作业15%,测验(包括期中)20%,大抵确实是调分的。
建议能跑的尽量都跑。
这个老师问题很多,包括喜欢讲他的一堆偏僻的C语言冷门操作,课间不休息、下课拖堂,助教与老师、助教与学生沟通困难,PPT做的没有条理而且烂等等,但对于大部分这样的老师来说只要考试没啥问题且给分好,问题不大。
今天是期中测试,直接拿往年卷子考,且该卷子及正确答案都已泄漏在网上。你考也就算了,卷子中有一道题意不明需要自己揣测的题,没想明白连着后一道大题都没分。还有一道错题,隔壁班考的时候改了题目,然而本班考试没有改,考完有学生去问老师,老师说他知道但是没有说,蚌埠住了。
另外关于实验,这学期实验刚刚开始,但H班和隔壁班已经早早开始了实验,包括搭环境,提供Git以及循序渐进的各种实验等等,但我们班就随便分了个组,学期过了一半了才给一点参考就叫开始做一个大实验,连个实验文档都没有。别的班确实作业多实验多,但别人老师助教认真负责,有问题交流也及时,引导很细致,但我们班做个作业问助教都是“可能”“应该”,期中考试前两天才突然通知开卷,还只让带书、PPT和作业(对,笔记不让带),就离谱。
期末出分了,给分还不错。但我还是想说一学期真没学到什么东西,实验也就是马马虎虎做完了,期末考试挺简单,复习半天流图的ud链可用表达式什么的结果没考,三地址码什么也是ppt不用看硬写的那种,都没啥技术含量。只能说想摸鱼来这个班还行,只能说幸好自己没打算从事于程序设计语言这方向。
最后想说的一点是如果你选了这门课,一定要上课记好上课老师讲的阴间++的用法和非常规的一些数组声明,其他的看隔壁班课件就行。
快毕业了,统一评课。
这门课我是20年上的,总体推荐。
给十分绝不是因为这门课值得十分,只是把分拉高一点。转了一圈,基本上都是暴躁老哥一分走人。
这门课的格局是:
lc、zy、zql各带一个班。
zy班上,据说就是怎么难怎么来。
lc班上,据说就是怎么卷怎么来。
都是据说,我没上过。
zql班上,是怎么摸怎么来。
反正我选zql老师的课,就是为了摸。原因没必要在这里解释。
最后果然不出所料,上课也摸,作业也摸,实验也摸,考试也摸。
反正学生摸,助教摸,老师摸,大家都摸。
真想学东西的,有谁会来这个班呢?又或者是怕了卷的,才会来这个班吧。当然了,如果有其他情况,无意冒犯。
差评我转了一圈,大家似乎是想摸一学期然后满绩。这个就不评论了,因为我也想。但是我想的同时也知道,如果不是这样,那也理所当然。
话说回来,zql班上有多安详大家有目共睹。你想卷也卷不起来。反正我个人大三时在养老,没有比这个班更舒服的地方了。
至于缺点,暴躁老哥们说的已经很详尽了,没有必要赘述。打个八折就好。老师做人还是很好很负责的,不能全盘否认,否则就是犯了形而上的错误。
最后讲个笑话:
lc19年留校亲自改卷:认真负责,吾辈楷模。
zql20年因故亲自改卷:xx助教,教学事故。
?
郑老师的课,从授课质量上可以看出是花了不少心思的,但是在实验、作业、考试等方面有些个人感觉很坑的点。选课还请慎重考虑。大多坑点其他人已经说得很明白了,这里补一些我觉得不太合适的地方吧。
当然,说白了,与这些相比,实验要求朝令夕改、考试偏题怪题频发才是最大的坑点。我的确认可郑老师在某些方面所体现出的责任心(比如考完试亲自改卷),但这门课也确实极大地消磨了我对编译的热情。也请各位不要抱有任何的侥幸心理,本学期的期末考试出了一个莫名其妙的C数组写法,而这道连环题一旦没猜对就是整道大题直接降一个总评级别的失分。而这个莫名其妙的写法,在此前任何郑老师的讲课、PPT、作业、教材里都没有任何提及。
只能给到四分。。。
完全放养状态。。。这么重要的一门课一学期只有一次习题课,群里问问题助教不知道是没流量还是咋,永远不回答,课程体验真的不好。
更新于2021.3
评课社区已出现循环。建议大家自行判断。当然我是推荐李诚班的,老师人很好,助教人也好,就是可能会比较费肝(毕竟利益相关:我是adsl的
如果你觉得诚哥班卷,不想去,那完全可以换到zql班上。但是期末别后悔。我同意隔壁班的同学说的这句话:
合着是愿意花时间在实验上是错误的?你愿意花2个小时背书我愿意花2个小时写代码我就不配高分?
啥?你想要事少给分高的六边形战士?还有人嫌张信明上课水哩。坤哥os实验也要慢慢变难。今年已经有个文档36页的实验了。
个人觉得,今年zql老师的这门课略微有点水。
首先,我觉得讲课挺无聊的,每次课的前20分钟还勉强能够保持专注,然而过了这段时间就会因为跟不上/讲的太慢等各种原因完全失去了听课的动力,于是只能课后啃PPT。但是啃PPT效果似乎也挺好(
其次就是实验安排比往年水。第一个实验是让你在PL/0编译器中增加while, break, continue, else和连续赋值语句。第二个实验是进行C语言声明语句分析。但是,这种实验布置也拯救了这个爆炸的学期(笑)。实验检查方式:第一次是抽取几组做报告,第二次是每组做报告。
最后,作业的安排也有点问题。自底向上分析、数据流分析竟没留过作业;期中考试之后只留了一次作业,使靠作业预习课程变得困难。
其实老师人挺好的,很欢迎我们向他问问题,我和几位同学考试前一天也去了一趟他的办公室提问。但是,由于前三点原因,这门课总是让我有一种怪怪的感觉。
课程安排:
综合大家的反映来看,给分超好。
1 非常好代码,是我这辈子都写不出来的。鉴于郑老师是雷军的同学,我只能说老师肯定是把雷军当年写的代码拿来给我们出作业了。
2 教材和PPT上面的有些定义会出现倒装的情况,给人一种是从英文翻译过来的感觉,可就算是这样,翻译之后不应该恢复到中文的语序吗?不然大家读着也很别扭。难不成是机翻的?
上课体验极差,老师讲课想到哪讲哪,逻辑略为混乱,助教十分之摸,到了期末才知道助教的样子(可能是我习题课没听罢)。
怎么说呢,个人推荐能run李诚run李诚,能学到东西,给分也好,但今年似乎大部分人反向跑毒了,zql约定的40%优秀率实现了,给分非常的奶。实验内容比较少(作为一个大实验来说),这学期的大实验是Yacc语言与PL0的编译器的完善,主要难度在于实现数组的声明和初始化,整个实验≈lc1/3总实验量,总的来说不难,但膈应人的是无时无刻在变的实验标准,可能检查一次实验标准变一次,发现某个新样例过不了就得继续改,叹气。
作业一半魔法,只有魔法才能对付魔法,runtime的汇编语言简直是魔法之最。考前专门花了一下午去看汇编魔法怎么写,结果考试还是给橄榄了,只会写最后一个空。助教提供的作业答案不可全信,可能助教也搞不懂这些程序是怎么搞的,如果有疑问建议直接email老师。
zql十分关照学生,上课前进行随机游走来看(gank)大家在干嘛,问问学习过程有没有啥问题,虽然略尬,有幸被zql询问一次。除此之外还有一些比较迷惑的行为,比如期中考的时候二维随机游动到靠走道的人旁边看你答题,然后会提示一下你哪里可能有问题,以及考完期中考还让写期中反思然后不了了之,有高中班主任那味了。
总的来说:想摸鱼来zql,想卷/学东西去lc。
PS:最后给了97,真好
首先,老师本人是没什么太大问题的,讲课也还行,甚至还自己一个人卖力地检查实验、改试卷。也很愿意和同学们交流。出的题目有一点点奇奇怪怪的。
第二,助教实在是有很大的问题,发个作业答案也不及时,据说也不为同学们答疑,或者就是回答不会。实验和试卷都是老师负责,也没什么习题课答疑课,工作量完全就是改改作业吧,工资到底发在哪啊???但是这学期经历了xk的课之后,我深刻地认识到,有一个什么都不管的助教是多么快乐qaq(不然我期中之后全抄别人的作业平时分能给我扣没 赞美!感恩!
第三,本人对这种半放羊式教学还蛮喜欢的,实验也不难,当初就是看中这一点才退了英才班而且也没去lc班。感觉还是调了分的,期末卷面估计不超过70,总评90。
提前到教室上课会触发隐藏剧情。郑老师喜欢到台下走一圈,看我们在干啥。这是什么?算法作业!看一下。这是什么?数理逻辑!看一下。他还问我是哪里人,成绩排名怎么样,有没有进实验室,去的什么实验室。虽然有的同学会不好意思,但是郑老师努力融入我们还是蛮可爱的。所以i人可以来晚点,e人可以早点来。
作业一共9次,覆盖了所有考试的知识点。只有一个组队实验,在C语言框架的基础上增添新功能,会参考个人的工作量给分。期中小测开卷,期末考试闭卷。
给分应该是不错的。我期中95,期末20多分的题没写,很惭愧我在组队实验工作量较少,总评85。
完了,今天的魔法咒语没背下来,魔法题不会写,要寄了。不过好处是题量很少,隔壁班据说有10道题来着,我们班就五道题,但再多的时间也没法完成没背下咒语的魔法
虽然实验比较简单,期末比较简单,作业一般(比期末难很多,期末太简单了(2022秋)),但是我实验做了不少扩展的,用C++重写了老师的C框架,加了不少新功能(无加分功能,个人兴趣),最后给分我很很很满意!!!!(C实验的框架确实质量比较差,但是实验本身不难,推荐后来同学重写(我多次询问老师,老师是允许随便改的),LL(1)文法是比较基本的)
代码:https://github.com/huangbot-maker/huangbot/tree/main/pl0%2B
这个班比较轻松,老师比较有趣讲的也算不错
大作业和隔壁lc班一个实验的难度差不多
作业偏少,只有6次
考试比较简单简单,最后老师奶穿
我大作业组全员4.3
选课win麻了
(今年班上摆子特别多
今年没有考古怪的c魔法,只考了个简单的int(*p)[20] 类型判断,好评
试卷也比较简单,汇编考的不难。但是考试开始的时候有个监考老师总是大声讲话很搞心态😓
作业较少
不点名
印象中zql今年没有点人回答问题,课前随机游走还是有的😆
龙门
我特地来看鸽王的2333
教的还好,但是我没太听懂。。。
我就记住了他是雷军的校友。。。
踩踩
鉴于郑老师连年差评,我来拉一拉分。
老师本身的讲课没啥太大问题,无论是当堂听课还是回去自己啃ppt搞懂知识点都完全没有问题。这门课之前差评的原因一直是给分和助教两方面。关于给分,有一位勇士给郑老师发邮件阐述了优秀率给满的必要性并被郑老师点赞,所以今年优秀率应该是给满了。关于助教,仍然拉胯。一共有三位助教,其中一位问问题从来不回,其余两位问题回得较快,但是很多时候他们自己也不会,导致最后我不得不直接给老师发邮件问问题。而且最后发布的习题答案也有几处错误。关于实验,只有一个任务,我们组用两天就全部肝完了,整个学期就这么一个实验(而且github上有一堆参考代码)。关于考试,这次的C魔法考的比较简单,大多数都是老师课堂上强调的考点,认真过一遍ppt和作业问题都不大。关于老师,其实我想说,郑老师挺认真负责的,我晚上11:30给老师发邮件老师15分钟就回了,并不止在邮件中回答了我的问题,还举了很多例子帮我理解,这一点让我挺感动的。
最后总结一下,这个班是是三个班里面最养老的,实验最少的情况下优秀率也能给满。如果不想太卷,不想每两周做一次实验,这个班是首选。
讲的莫名感觉不错?大作业也就是一个mini-Python。
但是小测和考试真不是人写的,梗倒是产生了不少,冲冲冲常见梗:人(上人)*
墙裂推荐!
课讲的很好很生动,期末大作业是mini python,理解原理之后并不难。老师精通c语言各种奇怪的语法,受益匪浅。
考试题题量我觉得不算小,难度也不简单,期中小测经常有连环题,但是给分很好。
墙裂推荐!
实验写了个mini python解释器,完成基本元素类型及基本函数操作等,其实理解原理了就不难
老师自己也提前花一个晚上写了一份用来展示效果,说大概四五百行吧
然后小组就一共写了一千五百行完成了要求的功能
然而总有大佬几乎独立完成了py全部功能(安详
上课基本没听过,自己在下面看ppt,偶尔来兴趣听一会儿就睡着了
两次期中闭卷,范围从开学到考试的全部内容
都是大题,而且后面的题会和前面的相关,就很慌
助教只说都很好,平均分及格了
期末统考删减了一些,会提前划范围,甚至根据群众意见删掉了一块考试范围
感觉自己都没及格,总评3.0已经满足了(
ps,老师特别喜欢++和指针的各种骚操作,只有QLcompiler能编译那种,谨慎选课
这门课难度的确很大,期末考试居然三道题考了一堆稀奇古怪的C++表达式,类似int *(p[])[] 这种,感觉考炸了,差不多0分那种。不过期中考试还好。 实验是根据PL0继续完善一个编译器(生成一个简单的栈机器的机器码,栈机器就在c文件里实现),暴力写了大量递归函数,导致一个c文件长达3000+行,当时老师还和我讨论了好几次 最后给了4.0,跪谢
考完编译原理来答一发,郑老师人很和蔼,给人很亲切的感觉,有时候也蛮幽默。课讲的也挺好的,给分目前还没出分。具体比例是实验35,作业15,期中10(因为本来没有期中,临时加的所以占比比较低),期末40。
实验是老师给一个很雏形的PL0语言,让你添加各种功能和语句。因为是分小组,而且最后检查个人感觉比较水,所以要想划水还是蛮容易的。但是老师期中期末会有较大比例(约40%)的试题是涉及这个PL0的,所以好好做还是没错的。试题的话比较爱出的题大约就是DFA,LL(1),LR(1)文法,语法制导翻译这种。如果单纯应付考试的话,其实还蛮容易的。
这门课的实验比例给你说是这么多,实际上基本为0,好好考好期中期末最重要,最后成绩82