加州留学生社区

标题: NYU及NYU-Poly计算机系课程的一些感受 [打印本页]

作者: Bingchen    时间: 2017-3-14 11:37
标题: NYU及NYU-Poly计算机系课程的一些感受
不知不觉就到毕业的时候了,今天想把自己上过的一些课程(包括旁听)的感受,以及学习上面的一点经验分享一下,算是两年学生生涯的一个总结,也能给将来的学弟学妹们提供一个参考。以下包括NYU-Poly及NYU Computer Department提供的课程。-google 1point3acres
. Waral 鍗氬鏈夋洿澶氭枃绔�,
*Disclaimer: 以下内容完全为作者主观感受,本人不保证客观公正的态度,请选择性参考。
. 鐣欏鐢宠璁哄潧-涓€浜╀笁鍒嗗湴
NYU-Poly的课程:

* CS6133 Computer Architecture 这门课由Robert Flynn教授,白胡子老头,很可爱,有点像肯德基爷爷,喜欢吹嘘他兄弟在IBM搞体系架构的光辉事迹。但是我不得不说他课教的很一般,他的一个特点就是声音小,上课要是坐到三排以后基本上就听不见了,他的板书又写的随心所欲,一不留神就不知道他在写什么了。
. from: 1point3acres.com/bbs
这门课的内容还是挺有用的,讲CPU,内存的工作原理,本科基础不好的同学可以选。考试可以带一张A4的cheating sheet,混A的课,想拉GPA的同学也可以选,但是我需要提醒的是,虽然是水课,但也不能掉以轻心,我认识一个很厉害同学因为忙实习又听说是水课,没有放心上,结果拿了个A-,也有点遗憾。. 1point3acres.com/bbs

另友情提醒,Robert Flynn教的算法1千万别上,据上过的同学说,一学期就讲了几个排序,什么也没学到。

* CS 6043 Design and Analysis of AlgorithMS II 我在Poly最爱的课,讲CLRS那本书的后半部分,包括Amortize Analysis, Binomial Heap, Fib Heap, Max-flow Min-cut, NP-Complete等等,Professor Yi-Jen Chiang教的,一个台湾老师,我感觉他对算法的理解很深刻,讲问题深入浅出,给分又比较好。考试open book, 建议大家就是把课后练习都做一次,考试的时候把答案带去就OK了,会有课后练习的原题。这门课概率的东西很多,学这门的一个经验就是概率学的不太好的同学可以先稍微复习一下概率,至少要搞清楚基本概念,学起来会轻松很多。. from: 1point3acres.com/bbs

这门课上课节奏很快,非常带劲儿,打个比方就像吃火锅一样,越吃越辣,越辣越想吃,我的大爱。.1point3acres缃�

* CS 6373 Programming Languages 系里要求的必修课之一,我上那会儿是由外聘教授Larry Muller教的,考试特别简单,给分特别好,属于混A的课。另外有个section是Daniel Katz教的,听说他平时上课挺幽默,考试给分超级严,不容易拿A,不过认真学习的话也是没有问题的。

课本我建议大家不要买学校要求的那本,买Programming Language Pragmatics by Michael L. Scott这本,我觉得比学校要求那本写的好。买个旧版的就行了,编程语言发展了这么几十年,基础概念就那些,几十年都没怎么变。

* CS 6533 Interactive Computer Graphics Professor Yi-Jen Chiang教的,貌似只有春季有,讲图形学中的一些基本算法,一共有四次programming assignment, 用Visual C++.net编OpenGL,最后做出一个会滚的球,带阴影和波浪及烟花效果,很有趣。

这门课的programming assignment是属于渐进式的那种,我建议对C++有一定基础但是没怎么写过C++的同学可以选。给分也挺好,容易拿A。
-google 1point3acres
* CS 6613 Artificial Intelligence I 教授Edward K. Wong教的课,讲得很基础,课程覆盖了那本经典教材的大部分内容,包括search,logic reasoning, machine learning开了个头,具体记不清了。这个教授一看就是很好说话的类型,所以给分也不会差。课本值得购买,对人工智能有兴趣的同学可以收藏一下课本。

稍微不足的就是教授的英文差了点,有口音,刚来的同学听起来可能会比较吃力。

* CS 6703 Computational Geometry 这门课主要讲各种计算机处理几何问题的算法,我感觉如果不搞图形方面的东西的话,这门课不怎么有用。Boris Aronov教授讲的,讲得比较一般,特别随意,上课就拿支粉笔在黑板上画,作业他收上去也不改,最后期末的时候随意改改。

这门课没有期末考试,基本上隔一周一次作业,算法看懂了就不难,自己做个project然后presentation一下就能拿A。我个人对这门课比较没感觉,因为不喜欢presentation,其他没什么。课本倒是挺经典,我收藏了。

* CS 6923 Machine Learning 机器学习入门课,Lisa Hellerstein讲得特别有耐心,特别细致,特别认真负责,我特别喜欢Lisa。美中不足的是内容包括比较少,因为毕竟是入门课,我记得只讲了决策树的算法,Naive Bayes,MaxEnt, SVM等linear classification,贝页斯网络等。神经网络都没有讲。stanford貌似有个machine learning公开课,大家可以看那个作为参考。学校也有另外一门专门讲神经网络的课,CS 6673 Neural Network Computing,不过我没听过不知道怎么样。

作业大概一周一次,有midterm和final exam,再加上一个可以组团的project,拿A需要花点功夫在上面,主要是最后那个report一定要好好写,我估计project那么多,她都没有办法一个一个运行的,所以只根据report打分。考试是可以带cheating sheet,不过我感觉没什么用。

课本的话其实不用买,图书馆有,拿来看看就是了。那个版本比较老,还是97年出的,据说作者在写新版本,可以等新版出了再买。

***以下两门是我好友们比较推荐的课***

* CS 6843 Computer Networking 大名鼎鼎的Ross讲的。没有上过这门课是我在Poly的一个遗憾。
. visit 1point3acres.com for more.
* CS 6913 Web Search Engines 据说Torsten Suel之前在Google就是干这个的,对搜索引擎有深刻的理解。

* CS 6753 Theory of Computation 还是我的最爱Lisa讲的,深入浅出各种计算理论。
. Waral 鍗氬鏈夋洿澶氭枃绔�,
---------------------------------------------------------------------------------------------------------------------------------

下面来讲讲 NYU CS Department提供的课

* CSCI-GA.2110-003 Programming Languages NYU基础必修课。我上的那个section是Cory Plock讲的,讲得非常好,人也很和善,一周一次作业,一共有三次programming assignment,分别是用Scheme, ML和 Prolog三种语言写,不难但是很有趣,在这个imperative language当道的今天,懂一点functional language的理念还是必须的。考试close book, 不过基本都是ppt上的概念,理解了就会做题。容易拿A。助教很漂亮。

另外那个section的professor听我同学说是Ada语言的发明者之一,教了他们好多ada的东西,也不错的。

* CSCI-GA.2250-001 Operating Systems NYU必修基础课。我上的是Mohamed Zahran这哥们儿讲得。一开始我还以为他是印度三哥,后来才听说是中东某国的。我还是比较喜欢他,这哥们儿的课都很容易拿A,他上课的一个特点就是可以把难的东西讲得很简单,通透,上课也引导大家积极思考。考试比较灵活,但是理解了ppt上的概念就没有问题。

一共有4次programming assignment,都很简单,用java或者c++都可以。但是如果上他的课,一个要注意的地方就是千万要特别认真仔细,他比较扣细节的,容易在细节上丢分。你的代码*一定*要拿到学校Linux的机器上运行正确才可以。我知道有同学在mac上或者用visual studio写好的代码,在学校机器不能运行,结果叭叽,一半的分没了,他也不会听你 argue的,很吃亏。

* CSCI-GA.1170-001 Fundamental Algorithms NYU必修基础课。Esther Ezra讲的很简单,比较偏向于How to而不是Why to,看得出来她花了很大心思想把这门课讲好,不过她英语有口音,上课需要集中精神。内容上基本cover了CLRS一书从第一章到graph那里的东西,加上一点点dynamic programming的章节。一周上两次课,一个lecture一个recitation,作业一周一次,一共12次,每次三到四道题,不难。她考试的内容基本上和平时作业及发的sample exam内容差不多,把sample exam做两次就没有问题了。

上这门课一个血的教训就是不能大意,平时作业,半期考试,期末考试,一样都马虎不得。我由于半期考试没有考好,最后总成绩拿了94.8,结果是个A-(96才能拿A),非常郁闷。. 鐗涗汉浜戦泦,涓€浜╀笁鍒嗗湴
. 1point 3acres 璁哄潧
这学期另外一个section是由Ernest Davis讲的,我不太清楚他给分怎么样,不过听过他的AI课,感觉讲得还不如Esther Ezra。 其他学期会有Chee Yap讲的section,讲得好但是难,大家可以自行斟酌。. 涓€浜�-涓夊垎-鍦帮紝鐙鍙戝竷

* CSCI-GA.2112-001 Scientific Computing 到目前为止我在NYU最爱的课,没有之一,但是请认准Michael Shelley。Michael大概五六十岁,超级帅,笑容充满了魅力,有多帅呢?ratemyprofessor上有个哥们儿对他的评价是:如果他(指Michael)不做学术,那他可以去好莱坞明星。我绝对是他的超级粉丝,上他的课非常的开心,他对科学计算的了解绝对是大师级的,而且语言中的智慧及幽默,让两个小时的课变得像二十分钟。我个人五星推荐他的课。

这课是属于CS和math交叉课,也就是两个专业的人都可以选。大概一周一次作业,作业对于数学不好的人(比如我)有一定难度,需要花时间,没有考试,最后做个project或者paper就行,所以对于计算机专业的同学来说比较吃亏,想要拿A需要一定的付出。

Michael教的这个section是不用买教材的,当时他发了一本免费的pdf书,由NYU的两位教授自己写的,我觉得写的很好,所以打印出来装订成册收藏。

* CSCI-GA.2130-001 Compiler Construction 一开始选这门课是因为不得不选。因为我要把学业压缩在一年内完成,NYU的毕业条件有一项是必须要选一门capstone的课,而非常被动的是这一学期可以算作capstone的课程,除了Jean-Claude Franchitti(shi一样的教授, 我后面再说)教的课,就只有这门了。. 涓€浜�-涓夊垎-鍦帮紝鐙鍙戝竷

这门课由Mohamed Zahran讲的,之前我讲Operation System时有提过他,人还不错。内容就是编译原理的那些东西,一共四次project,C或C++写,得自学一点flex和 bison,稍微有点难度,最后做成一个compiler的前端,可以编译一个类似pascal的语言,很有成就感,有一次期末考,open book,没有homework,没有midterm,比较容易拿A。

讲个题外话,Professor Z有次上课讲说,他教的另外一门研究生的课GPU Programming,里面有个大一的孩子拿了系里特别许可来听。那个小孩自己写了个trainslator,可以把python的代码转换为c++。他就用python做GPU编程,然后转换为 c++来交作业。也就是说这个小孩在高中的时候就已经明白了至少编译原理,python,及C++,特别牛逼。

* CSCI-GA.2590-001 Natural Language Processing 这门课很好,我推荐学完machine learning想要继续在这个方向上发展的同学可以选。修这门课最大的好处是可以把machine learning中学到的理论应用到实际,而且很有成就感。

课程主要讲了part of speech tagging(Viterbi, HMM, MEMM等), named entity, pattern match, annotation, parsing(CKY和 Earley's Alg), machine translation等。美中不足是讲得快,不够深,需要自己看课本理解。课本也是相当经典,值得收藏。

stanford也有NLP的公开课,讲得相当的好,两个lecturer都是这个学科的领头人,建议修这门课的同学一定要一起看看。
. from: 1point3acres.com/bbs
课程负担是一共7次作业(其中4次编程,可以用java或者python编)外加一个final project和final exam。 Adam Meyers教授长得就是一张好人脸,最后给分特别好。助教Sun, Ang是NLP的Ph.D,也是特别认真敬业,他今年毕业,在这里祝他前程似锦。
.鐣欏璁哄潧-涓€浜�-涓夊垎鍦�
* CSCI-GA.2560-001 Artificial Intelligence 这门课我一开始打算选,没想到和Fundamental Algorithm时间冲突,只好drop掉了。老头子Ernest Davis讲的。我个人感觉老头子自己懂的挺多的,但是讲的并不好,一个人拿支粉笔,在黑板上就进入了自己的世界,我看下面的同学大家都是一脸迷茫。.鏈枃鍘熷垱鑷�1point3acres璁哄潧
.鐣欏璁哄潧-涓€浜�-涓夊垎鍦�
课程负担还好,平时作业有四次,programming assignment有四次,都不难,一次final,给分并不轻松,我朋友说平时作业和programming assignment都是满分,考试感觉也还好,结果最后却没有拿A,不知道为什么。

* CSCI-GA.3033-005 Production Quality Software 这门课我是中途才去旁听的,因为大家都说特别好,每次选课都是第一时间就被选满的。课程内容主要是教如果写好程序,养成编程中的一些好习惯。会讲Design Pattern, Concurrency in Java, Java Doc, Junit, Ant等等,对于没有在工业界干过的同学,听听也是有价值的。讲师Michael Schidlowsky在google doc spreadsheet组工作,一看就是那种人生的赢家,一张简历帅得令人发指,听说课程压力不大,总共三四次programming assignment,但是不知道给分怎么样。. more info on 1point3acres.com

* CSCI-GA.3033-006 Probabilistic Graphical Models 概率模型,我去旁听过一次就被赶走了,因为实在是太多人去听,教室人满为患,导致注册了这门课的人都没有座位坐,David Sontag就把旁听的人都赶走了... 好课但是不容易拿A,上这课需要有一定机器学习及概率论基础,老师讲得也好。

Stanford也有这门课的公开课(感谢Stanford,感谢主..)不过看视频始终没有现场有气氛,我打算以后再回来趁这门课。

* CSCI-GA.3033-014 Object Oriented Programming 和Programming Language一样,这门课也是讲概念的课,对于没有太多编程经验的同学其实是比较合适的,一来对语言无关的编程机制能有更深入的了解,二来programming assignment的难度也适中,正好是个循序渐进学习的过程。Professor Robert Grimm讲得很好, 毕竟是新老师,对课程的准备也比较充分。Professor Benjamin Goldberg就差了很多,上课节奏太慢,我听得想睡觉。-google 1point3acres

课程内容主要讲了OOP中的基本概念,virtual table的实现机制,visitor pattern, scala,reference的实现机制,好像没什么了。
-google 1point3acres
下面来讲一下shi一样存在的教授: Jean-Claude Franchitti

不是我侮辱这位教授,我相信上过他课的同学都会同意我的话,而我不幸的踩中了这坨shi两次。

* CSCI-GA.3033-006 Application Servers 这是我第一次中招。因为入学注册比较晚的原因,当我可以选课的时候课程已经被抢的七七八八了,而我因为要压缩学业时间,需要选四门课,除了基础课已经没有别的课可以选。我痛苦的经历开始了。上他的课就是,我觉得他似乎在讲什么,但是他又似乎什么都没有讲。不去上课觉得对不住自己交的学费,去了又觉得对不住自己的时间。他和他的TA Joanna绝对是NYU的一对奇葩,整个课的同学都说发给他俩的邮件*从来么有回复*, 然后期末结束告诉我一个分数,一个学期下来什么都学不到。

* CSCI-GA.2262-001 Data Communications and Networks

好吧,我特别欠的又中招了。一开始我很小心翼翼的躲开了他的课,没想到没想到,开课没多久我拿到了OOP那门课Grader的工作。因为贪恋小钱,我drop掉了OOP,而这时候可以选的课已经不多了,只有这一门和其他课时间不冲突,否则我需要继续drop别的课。我想,烂课就烂课吧,反正再混一门就毕业了。一念之差让我后悔莫及。整个160人的课,有20多个人选(估计是一些刚入学没有模清楚状况的同学),从第二次课开始,出现的同学就只有大概10个出头的样子。在他低沉的带有浓厚东欧口音的男低音中,大家有玩手机的,有上网的,有快睡着了,就是没有听讲的。我非常能理解大家的感受,因为他的声音很容易让人昏昏欲睡,连把读书当作乐趣的我都快睡着了。同样,平时交的作业完全石沉大海*没有回音*,最后期末的时候Albert上登了个成绩。

所以我告诫新生:珍惜生命,远离Franchitti

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

写了好多,累死了,最后说两句关于毕业要求的事:

NYU要求MSCS的学生所修课程符合以下四个条件才可以毕业:

0. 修完36个学分,一门课3个学分,所以一共12门课。也有4学分的课,一般是Phd才念,因为多出来的那1个学分基本上就是白花钱,master同学很少有上的,毕竟自己掏钱心疼阿。. 鐗涗汉浜戦泦,涓€浜╀笁鍒嗗湴

A. 修完3门基础课, Fundamental Algrithms, Programming Language, Operating System.

* 注意这三门课一定要在第一,二学期内修完,比如秋季入学的话,必须要在暑假之前修完,否则要毕业会特别麻烦,这点我特地问过adviser的。

B. 修一门capstone类型的课。以下课程可以作为capstone:

* Advanced Computer Graphics
* Advanced Database Systems
* Compiler Construction
* Distributed Systems
* Info Tech Projects
* Software Engineering

C. 第三个要求是在以下领域内,至少选两个领域的课:
. more info on 1point3acres.com
1.Graphics
.鏈枃鍘熷垱鑷�1point3acres璁哄潧
2.Computation for Science and Society

3.Intelligent Systems. 涓€浜�-涓夊垎-鍦帮紝鐙鍙戝竷

4.Databases

这个其实不用担心,因为所有课都选到一个领域的几率太小了,随便选就好了,实在不放心就发封邮件问以下 adviser.





欢迎光临 加州留学生社区 (http://bbs.castudents.org/) Powered by Discuz! X3.3