Yao Lirong's Blog

Look Back on Cornell/Tsinghua 20FA

2021/01/11

CS4820 Intro Analysis of Algorithms

I got to do all the stuff I want. … I’m actually one of the Ithaca’s firefighters now and on average we have a really big and nice fire each year so I got to work when that comes.

– Dexter Kozen, 2020/12/16

因为网课的原因不想上写代码的课,4820是我本学期上的唯一一节CS课,也是拿的第一个CS A+。但是总体来说 4820 和 3110 上到最后都没有 2112 和 2802 有一种我真的成长了的成就感,可能是因为 4820 覆盖的东西太多,导致知识间比较割裂,用来证明一个算法的技巧在另一个模块就用不太上了。

他们说什么上完 4820 对面试有帮助,我觉得这完全就是扯淡的,可能确实刷题的时候你更容易看出来这应该用什么算法了,但是这门课所有的编程训练只能说是非常初级(到连我都觉得不难的水平)课程重点还是在算法的分析和证明上,和证明题一对比,给的编程题真就跟过家家一样。最后一次作业复刻了 sxy 的壮举交成了 release,幸亏还有个编程题的 10 分保底,这次作业就拿了 10/30 分。但是由于前面作业考试都不错,而且去不了跨时差 Office Hour 导致我所有问题都在 Piazza 上问了,participation grade 特别高。xzy 在课程中问 participation grade 怎么算时发现了以后我才去看的,我的 Piazza 贡献是整个班的第二,人家第一是成天回答问题,我是成天什么都没搞懂在上面问问题。不过用 Kozen 的话说,这也是一种 “contribute to the intellectual content of the course” 方式。所以大概是因为极高的 participation grade 以及对 Kozen 的诚恳请求,老人家最后高抬贵手给我了个 A+ (不过要是没误交作业也是我应得的啦)

对于 Dexter Kozen,说实话感觉他的教学水平并不如 Myers 和 Halpern,有的时候基本上是完全照着课本来的,如果他是完全按照课本来的,那么一般看课本甚至比他讲得好;但是当他按照自己的证明方法讲的时候,他的方法又比书上的好理解很多…不过比下肯定是有余的,比其他几个我上过课但是没在这提名的叫兽好多了。而且 Dexter Kozen 还会在最后一节课给你弹吉他听,就这还要啥自行车?

课程内容分布方面(可能不是 Kozen 而是书本的问题)分治和动态规划两章,我并不认为第一次接触这些概念的同学能听懂任何东西,分治直接给的是 FFT 和找平面中最近点的两个很变态的例子,动规直接是从多维动规开始讲的(书上是按维度顺序来的,这确实是Kozen一时兴起)网络流这一节 作为 Jon Kleinberg 和 Eva Tardos 的主场,讲得例子都非常有意思。

MATH4710 Basic Probability

傻逼中的傻逼课,我不认为在上完这节课以后我对概率和统计的理解对比2802之后有任何进步。当时是为了打算春季上机器学习,所以即使知道这法国人讲得屎但也是顶着头上落屎的风险上的。没想到人家法国人这么实诚,你觉得我讲得屎,我就真就用实际行动证明老子讲得就是屎,你还拿他没办法,你说气不气?上这个法国人的课上到学期末,我甚至都不知道 Poisson 或者其他概率分布的图像长什么样,我对每一个分布的认知完全是割裂的,直到期末考试我还要一个个查提到的分布的 distribution function 到底是什么。每一次的作业和考试都在非常离谱的地方给我扣分,最后成绩也贼难看,完完全全地打击了我学习数学的信心,不如说整个康奈尔数学院的存在,除了少数几个教授以外,就是为了打击你学习数学的信心。整个院里面,除了研究做不出来所以只能折磨学生取乐的教授,还有研究做不出来而且本身实力就不行所以在读博期间必须兼职助教于是就也跟着虐待学生的变态博士生。不化简扣1分,你说100分满分,中位数 7,80 你扣也就算了,60满分中位数58的考试你因为不化简给我扣2分,而且让我化简的还是一个带了四项组合数的超恶心式子,你怎么不直接让我默写 π 的后1000位呢?

EAS1540 Introductory Oceanography

大多数人强推的科学课,说实在话没什么意思。个人感觉不如 DEA1500(虽然是不一样的 distribution requirement)Gary Evans在我心里还是暂时的选修课之神的地位。大家都说这门科学课讲得东西简单(毕竟是连美国人都推荐的科学课)实际也确实如此,但是简单的部分他讲的我都会,顶多也就是高中地理高一水平;难的部分呢他说实话又没讲明白,而且 Bruce Monger 在整个学期都在不停的讲环保环保,所以来的没有 Gary 最后一课画龙点睛那样令人印象深刻,不过 Bruce Monger 的目标也达到了,现在我确实清楚地意识到如果 2030 和 2050 控温目标没达到的话,地球真的会灭亡。

INFO1998 Freshmen Team Projects (Intro to Machine Learning)

没意思,教你怎么用 sklearn 库的课

CS2024 C++ Programming

还是挺不错的,五六年以后,我终于第一次正式学习了C++这门语言,就是作业有些无聊。

CS4320 Introduction to Database Systems

我drop了这门课

一门教数据库的课,开课两个礼拜竟然仍然没教学生们如何在你的电脑上安装数据库来使用基本的 SQL 指令;老师操着一口谁也听不懂的德国口音,让我梦回我托福水平只有80分的时候元素听托福听力的那个秋天;录像上传 youtube 公开,就好像除了你的学生以外谁还会闲着没事不去上CMU的数据库,来上您的课练习德语一样(但还是要赞扬一下这个老师公开上传,他实际上也将近几年的所有课程录像上传到了 Cornell VOD,只是我不清楚到底谁会去看讲得这么烂的课)

在清华认识的同学 Leo 竟然跟我说他最后这门课得了一个 A+,而他得 A+ 的诀窍就是自己原来接触过数据库,不去上课,作业发下来以后自己查找相关资料进行学习,也是非常离谱,不知道德国人发现原来他觉得做得不错的学生都是通过这种方式“做的不错”的会作何感想。


两年以来,我首次感觉到我的学费花得值,就是在这个动荡的2020年,Cornell 对它的中国学生说,你可以去清北上交中的一所学校进行你的线下秋季学期,其他的所谓 Ivy 和 Ivy+ 们,大气都不敢出一个,更别说去清北上交了。康奈尔牛逼!

其实一开始我是录的上海交通大学,后来好像被补录的清华,有了TOP2,谁还会去上海一个不知名的小学校呢?

30240184 数据结构

现在我们要来证明一下它的正确性……………为什么要证明呢?就好像你不能说自己是世界一流大学你就是了,你肯定得证明一下自己确实有匹配的实力才行

– 邓俊辉,于为什么要证明二分查找的正确性

这是一门神奇的课程,无论讲得概念是简单的链表还是难的线段树,都能让学生受益,邓俊辉老师是伟大的老师,他让我一个原来觉得线段树或kd树这种东西离我很远的人,感受到了原来我也能听明白这么复杂的数据结构。他也让我认识到,我校的 Nate Foster 真是个 cjb,ocaml 的红黑树实现不是因为 pattern matching 所以代码才那么少,是因为它使用的是 3-4 重构而不是传统的旋转,要是 C++ 写重构代码量也会大幅减少… 邓俊辉老师也鼓励了我,说不定我和清华的同学们实力差距没有我原来想象的那么巨大,我差的就是一堂这么好的课,一个全是学CS同学的宿舍,一个耐心认真的老师而已。清北和MIT是我心目中的圣地,我以为里面的人都是愿意穷其一生为全人类服务的人,我也以为我这次来之后,这个想法要么破碎要么印证,因为这门课,因为邓俊辉老师,我现在更倾向于说我的这个想法被印证了。

实际上上完这门课以后我对自己的认知更迷茫了,虽然 PA1 做的不是那么好(和清华同学比,自己的预期还是达到了的)PA2 因为康奈尔期末考,摔伤了腿,生病等等几乎没做,但咱 PA3 拿了满分啊,而且 PA3 是唯一一个真正有 TA 指导的的 Programming Assignment,其他的都是别的同学可以直接问他们班里宿舍里的信竞大佬,我只能闭门造车。四舍五入,我是不是要是有一定程度的帮助,和清华同学比一点也不差呢?说实话我来之前确实心里面有点这样想,毕竟清华的人虽然聪明,但是大部分人高中三年没任何编程经历,我虽然蠢,但是对自己CS还是比较有信心的。直到上完这门课,期末考试几乎都不会的情况下,我的心里还是抱有那么一丝丝希望:说不定咱和清华人比一点不差呢。说到这个,我和其他人说起清华这门课很难的时候,他们表现得竟然是惊讶而不是理所当然,他们竟然真的觉得康奈尔提供的教育足以让我们可以和清华人抗衡。看来在有自知之明这点上我还是比其他同学高一点的(

选这门课还要感谢 cz,是他跟我说了这门课评价很好我才会去选,不然“数据结构”这种课我绝对觉得我都学得会了,懒得上。实际上我一开始不是在邓老师门下学习,一开始给国际交换生的名额只有另一个讲师的班了,但我第一节课去听了以后,她讲尾递归竟然说用到的空间会是 O(n),其中 n 是调用次数。别的我不确定,但是 Myers 曾经明确地说过尾递归的好处就是可以重复地使用调用栈,如此一来不会有溢出(当然了说不定 Java 和 C++ 并不一样)于是下课以后我去询问为什么是 O(n) 和她讲了我的想法,她表现得挺不耐烦,然后我追着她出了教室,她一边开自行车的锁一边听我说话,最后就撂下一个 ”恩,那可能是这样吧“ 就走了。这个表现让我回忆起了我的高中班主任也是这样,说自己很喜欢学生,很喜欢教学,最后你去找她的时候她根本是漠不关心,虚伪的一B,幸亏我后来认识 Leo,知道了他(并不知道自己应该跟我一个班)一直在听邓老师的课,去听了以后真是一个天上一个地下。清华的同学们啊,你们都在清华了,为什么要折磨自己,不跟着邓老师学呢?

上完这门课我也在想,是不是只有差的老师,没有差的学生?如果每个人都听邓老师的课,我很怀疑他们会听不懂(毕竟我都听懂了)可是其他大学的同学们并无法享受到这等待遇,只能逼着自己听讲那个讲得烂的。就好像 qsq 在北师大,或者我自己在康奈尔的经历完全一样,一个差的老师不仅帮不到学生,还会严重地打击一个人的自信心,让他深深地怀疑我到底喜不喜欢这个学科,这个学科到底适不适合我等等此类。

Logic, Computing, Games

清华大学特聘教授,斯坦福大学名誉教授,什么什么很厉害的研究所的创始人 Johan van Benthem!来给你

上网课!

而且这网课还是如果你想要问问题必须等老师一节课下课以后,你才能和助教举手示意说我有个问题,然后他会给你一个麦克风你才能问。学生没有任何直接联系教授的方法,必须通过助教,助教又一副爱答不理的样子,课程推荐阅读也没有,必要先修知识也不写,甚至连个 syllabus 都没得。教授的课讲得其实还不错,第一节课我感觉自己听到了前二十分钟,当我后面完全听不懂想要自己阅读材料寻求帮助时,发现这门课屁都不提供,也不知道是这个教授不上心,还是助教什么都不管只管向教授报告“一切安好”,或者是全清华的课都是这个德行,我反正上不下去这课了,也是很遗憾的,毕竟对方看起来真的是很有名的教授,比康奈尔的哲学院估计好不少呢…

话说后来我还去看了几节,发现人是越来越少,看到清华的同学们也退了我是很开心的,不过他们可能是因为听不懂英语退的吧?我也不知道

Introduction to Artificial Intelligence

圆了一个自己“上叉院的课”的这一装逼梦,第一节课是个老头子,英语讲得也不很溜道但就是要说英语,第一节课啥也没讲就讲了讲AI的历史什么的,很是没意思。后来发现这个英语讲得不溜道,说话也不溜道的老头子是姚期智老先生…嘶,对不起

第二节课就开始有意思了,一上来就 reinforcement learning 的什么很厉害的人来讲很先进的 reinforcement learning,有意思是有意思,不过是局限于叉院同学们的有意思,我已经听不懂了,早早拜拜,听了一节课就行了

课堂上还有来自 Princeton 的同学们(看到她们 Gmail 右上角的校标确定的)我第二节课就不去了,不知道我们 Princeton 的小同学是什么时候不去的,还是她们都能听懂。不过你说她们有叉院同学的实力,我是绝对不信的。

CATALOG
  1. 1. CS4820 Intro Analysis of Algorithms
  2. 2. MATH4710 Basic Probability
  3. 3. EAS1540 Introductory Oceanography
  4. 4. INFO1998 Freshmen Team Projects (Intro to Machine Learning)
  5. 5. CS2024 C++ Programming
  6. 6. CS4320 Introduction to Database Systems
  7. 7. 30240184 数据结构
  8. 8. Logic, Computing, Games
  9. 9. Introduction to Artificial Intelligence