NYU Courant CS课程介绍

avatar 92433
huangyu
49895
74
是时候来回报下社会了~最近应该会有大批新生涌入,急需快速了解学院课程方便自己选课。这篇帖子主要是介绍课程的,会涵盖这两年我见过的以及上过的课。如果需要了解实习全职方便的信息,给个基友的传送门,大家可怜可怜她赏她点米吧哈哈哈:1point3acres.com

必修课:
Programming Languauge:这个课一般有两个教授:Cory Plock和Benjamin Goldberg,Plock是Goldberg以前带的博士生。所以大部分的人会优先选择Goldberg。Goldberg讲的有点慢但是会比较深入,而且绝对是对学生非常非常的好。我见过他在办公室一个下午都在亲自解答学生的scheme interpreter的问题。Plock语速比较快,但适合让我全神贯注的听课,但需要捕捉信息的能力强一些。可能一两句话里面有很多值得去查的东西需要快速记下来回头再来回顾。但两个课的作业次数差不多,总体来说Goldberg的难一些,但两个教授都很好,上哪个都不会后悔。这个课会把每种语言特性过一遍,然后利用语言特性去做作业,挺有意思的。我很喜欢这个课。
Fundamental Algorithm: 开过这个课的有三个教授,Dodis,Alan Siegel还有David。David有点自言自语所以不建议。Dodis以前在NYU的时候上的Siegel的算法课lol。Siegel不是会每年都开课,一般是教本科生,但他鼓励学生多问问题,作业也是改的很宽松而且很多都是大同小异的主要是给大家反复练习,数学上要求不太严。Dodis上课还好,图的算法他会讲的更多一些,但他讲的也算清楚,就是作业难哭了。每周要自己花时间去想,他的题目也都是他自己想的,而且对数学有要求,会有证明题。我上的Dodis的课,对于本科没上过算法只上过数据结构(比如我),需要一段时间去适应。
Operating System:一般人似乎都选Hubertus,所以我也就跟风选了。这个对于本科没太写过代码或者不太会写代码(比如我)来说,简直是太有用了!!必修课逃不掉,所以哭着也要上完。他教课很久了,所以每个lab都会有可执行文件去diff,少个空格多个冒号他的改分脚本跑出来都会是0分。Github上有人放源码,所以会有不少同学去抄。我比较后知后觉,但因为这样这个课也学到了非常多。能忍住,不要去看github的码,每次自己坚持写下来的话那么就能过这个坎(质变)。刚开始别人一晚上写完的代码我可能需要两个星期(看instruction看一天)而且可能写到一半发现哪里出问题了没封装好又要重新写。但这个过程会得到极大的锻炼。基本上刚开始两个lab难,但后面就好了,别人一个晚上写完的我可能两三天也可以写完了。但要听课,因为他会讲些课件上没有的考试可能会碰到。

选修课:
Database System: Zvi是对学生很好的教授了,上的课也简单作业也简单。第一个学期很多同学选择PL+Algo+Database来平衡学业,算是水课。Applied Cryptography: 这也是Zvi的课,所以也比较简单,选了用来平衡课业。他的材料会有挺难的地方,但他考试啥的不会为难大家,project也轻松。
Mathematical Techniques For CS Application:想修machine learning的话一般会推荐先上这个课,但也有人直接上machine learning的,所以说除非零基础很想学机器学习的,不然这个也可以算门水课。Open Source Tool: 这个课口碑很好,作业project难度都适中,所以算比较热门的课。然而没上过不多做评价。
Data Commnucation Network: Franchitte在学生口碑里应该算很差的,所以他的课一般我都不看,据说考试也是试卷不懂从哪里来的,自己的作业自己也不会写。但要混水课的这个可以算一门,而且会有project。他的课好处就是A随便拿。
Web Search Engine:刚来时候是两个google的人来教的(上的特别难),后来换成Ernest David了。他有点自言自语类型,但是他有在尽力改善这个课,第二次开就是除了project和期考还会有作业。而且他对学生也是很负责的教授,哪次课被假期冲掉了,他会想办法找个时间让有兴趣的同学去听。
Artificial Intelligence:这是Ernest David的课,但据说教的比WSE这个课要好。但褒贬不一,我也没上过,所以不予评论。作业据说大部分时候都还好。
Production Quality Software:学院网红人人都想上~其实还好,主要教design pattern,五次作业都不太难,没考试,所以如果自己能够把design pattern那本书看完的话,这个课可以来听听就不用上了。这个和OST是差不多的难度,所以深受学生喜爱,不会太难但也不会太简单。
Real Time & Big Data Analytics:教授是Suzanne,人超级的好,这个课整体反应是不难,但是又能学点东西,但基本每周都会有作业,还有期末期中和project demo。对于喜欢big data或者有这方意向的可以上上,主要教HDFS和Hadoop。
Big Data Application:这是这个暑假新开的课,和上面的课不同的是着重教scala和spark。正好还在nyc,所以去旁听了几节课。节奏有点慢,但细节讲的很清楚。对于我这种毕业的老人还会定期给我邮箱里发课件,人超级好,问问题也会回答~
.Net Web Application Development: 这也是Plock新开的课,然而比起PL来差太多,因为和.Net Framwork绑在一起了,很多配置上的东西很难几节课教清楚或者出了问题自己很难找到。C#也只是说下syntax。作业project难度适中。而且这个课要求用windows不然什么都用不了。
Social Multiplayer Games:难课。基友上了(撒花)~据说要花挺多时间的,然后每年游戏似乎也会变,所以不太可能从Github上找。对写代码能力要求很高,我见过有人上了半个多学期说要退课的,说每周要写的太多了,教AngularJS和别的。还有其他同学反映学到了如何测试游戏。教授也是听说总是会不断地提出新的要求让你去实现,所以是门硬课。挺可惜的没能上。
Computer Graphics:硬课。认准Kenneth Perlin,这是个很好很好的教授。和同学听过几节,很fancy但也要求很会写代码。教授是业界的大牛,而且一直留在nyu兢兢业业的教书,对学生也很关心,有时候上课结束也会讲点生活小哲理啥的,很治愈。这也是我比较遗憾的没能上的课。
Scientific Computing:据说是水课?不太懂。
Social Network:基本每节课都有quiz,而且比重比较大,需要出勤。project要求不高,但是demo要做好,因为这是教授能直观看到的东西,打分基本靠这个,report都不要求给的。
Natural Language Processing:一个年级大的老教授在教书,据说tool都用的挺老的,而且不让用新的tool。作业每周都有,还有期考和project,但是普遍反映不是很难。
Statistical Natural Language Processing:硬课。上过的同学都说很好,教授讲的很清楚,但课下要花很多时间去做作业。然后作业打分是完全公开的,前两名每次似乎会有bonus,然后教授也会把自己的分数放出来,截止前可以随时改自己的程序看跑出来的分数和排名。比较有意思然而也没能上。
Foundation of Machine Learning:硬课。而且其实是很数学的课。认识的同学选过,作业不多但是很难写很难想。还有project。教授也是业界名声响当当。Foundation指的不是基础,不是basic,而是你本身要有一定的功底对这领域有一定了解。
Advanced Machine Learning:更硬的课。是Foundation的升级版,对数学也是要求更高。但实际上据说应用领域不太广,涉及面比较少,讲究某个方面的深度。所以没见过有熟人选过。
Heuristic Problem Solving:很有意思的难课。没有考试,但每周都是任务满满,一边要准备本周的展示还要准备下周要用的材料各种。教授据说人很有意思,给发糖而且没有考试。所以讨厌考试但又喜欢写代码的人可以选择这个。而且给分很好。
Big Data Science:褒贬不一的课。但大部分都是对教授Anasse Bari贬义的评论。据说有时候课件就是谷歌搜索前三名。然后会很繁琐的有作业,不难但是很烦。所以很多人会觉得不喜欢。
Computational Machine Learning:据说和capstone难度相当的课。Project也不好做,作业也难。而且是期中之后忽然好难,很多以为选中水课的人都哭了。
Predictive Analytics:同样也是Anasse Bari的课。因为组队的人太多,比较偏向individual project所以没有选,也没有去听。但据说是水课。

Capstone:
Information Technology Projects:桥黑板,看清楚教授。如果是Evan Korth的话推荐上,据说会有好项目让学生去做,还有认识的同学通过这个课有机会拿到了Foursquare的full time。但CS也会有人混水课,选Franchitte教的这个当个Capstone混混也不失为一种选择,如果你重心全部放在找工作上。
Software Engineering:万年都是Franchitte教的,听说水,所以就不考虑了。有印度同学评价说很好...反正我是不信
Search Engine Architecture:据说workload很重,而且我在的期间只开过一次课。但上过的都说很好,应该是难但是又能学东西的课。
Compiler Construction:如果你和我一样喜欢PL喜欢OS,那么这个课很有可能也适合你!这是我最喜欢的课。很难,用的是教授自己做的tool,甚至可能还有bug还需要去邮件教授帮忙改。但这个教授自己发明的语言就是可以高度的模拟龙书里面的概念。而且本科没读过龙书的人也可以读。会花上很多时间但是你会很深刻的理解一门语言的特性。用functional language去实现compiler中的某些部分会是个很有意思的学习过程。尤其我PL的scheme没学好,就想借着这个机会好好学。教授在TwoSigma工作,人超级好,office hour会解释的非常详细,回邮件也即时。课程结束后还让大家参加他的conference(白吃白喝)。但每周都有作业,还有三次project还有期中期末,看到大纲人就跑了一半了。
Graphics Processing Units(GPUs):Mohamed的课都推荐。人好讲课也清楚。比Multicore难一点但也是很有用的课。
Multicore Processor: Mohamed是个超级好的教授!喜欢他的课!课程远比想象的简单,三次lab带个project。但你会对底层硬件有个了解,这是这个课的特别之处。码农可能只会码不太考虑硬件,这个课会让你明白为什么你需要了解hardware,还有你写代码的方式怎么样可以最大化的利用底层。你会用些多线程多进程的library,每年的问题也都不一样。我最喜欢他很关心学生,他会问我数学硬件软件喜欢哪个,自己喜欢做什么,并不就只是你问完问题就结束。他也会和你说他知道的故事,记住每个学生。太喜欢他了。
Distributed System:难课。应该是有五次lab同时还要读论文,也有考试。Lab使用go做,论文据说很难读懂。但上过的同学普遍反映是门很好的课,很多人被虐的乐在其中。但是Lab和MIT的似乎差不多,所以不能抄,因为会有剽窃检测,有人被抓到过,最后还跑去找教授求情勉强过了了(学术作弊,纯属活该没啥好说的)。还有人上完课之后和教授做independent study了。而且这个课一般到开学就在waitlist上面了。想上的话最好一开始就enroll。

学院里还有很多课,但是有些因为自己没上也没认识的人上,所以就略过了。实在遇到选课困难的也可以看看stern,Data Science或者Poly那边的课。当然,也欢迎私信我,如果我恰好有知道的信息的话。

在Courant两年的时光说长不长说短不短,认识了很多很靠谱很有爱的同学盆友,各个方便都很帮助我,真的是炒鸡幸运。当然,也会碰到有不愉快,比如会有奇葩问我你凭什么觉得自己能选这个课,甚至上着课的时候冲进教室到处问你们为什么选这个。或者是和基友说你这个XXX也是A?或者自己各种跪舔各大公司HR面了无数次(去了个所谓大公司),抄作业离间同学暗中使坏,利用教授同理心求分数的,帮忙代面试的。 如果你们“有幸”遇到这种人(腊鸡),不需要理。做好自己的事情就好。课选难点,逼一逼自己,可能又会有意想不到的发现。

最后祝读完这篇帖子的学弟学妹在courant度过愉快的学习生涯,茁壮成长~
  • 122
74条回复