CMU-SiliconValley-SE和Columbia-MSCS怎样选择( 三 )
我当时选的所有课程中,我觉得只有数据库那门课相对简单一些,不过这只是对我来说简单,因为我之前工作中使用数据库比较多,在学习这门课的时候自然轻松很多,而对于那些之前对数据库不是特别了解的同学而言,这门课学起来也是挺辛苦的。尤其这门课最后的project是要在Google cloud上写一个完整的网站,工作量也是很可观的,因此就算这门课也绝对称不上水。
但是平心而论,虽然这边的课程算不上水,但是课程的质量也绝对算不上顶尖,和那些优秀CS项目还是有一定差距的,这主要是因为这边的教授不是那么给力。比方说我选的database system这门课的教授给我的感觉就不是很好,在上课的时候他两道题就能讲上一节课,有些时候甚至记不清自己上一节课讲到了哪里,给人一种很不用心的感觉,作业给的也比较敷衍,我觉得对于课程学习帮助不是很大。在我看来这个老师应该是在外面有其他的事业,所以对教学不是很上心。还有当时给我上machine learning的教授则活脱脱将这门课变成了数学课,作业很难,课程内容也十分的硬核,因此教授对于课程质量有着决定性的影响。
事实上这边无论什么课程老师课堂上讲的内容都是比较少的,所以学习最主要的还是需要同学们自习。一位教授就曾经说过,他们上课就像教游泳,把我们推下水就可以了,至于学会游泳就要靠我们自己的努力了。在一个学期中我曾经选了四门课,两门课一周只上两个半小时的课程,另外两门更是一周只学50分钟,上课的时间是很少的。不过在课堂之外的reading以及作业量很大,但老师在课堂上所讲的知识根本就不足以帮助我们完成后续的作业,自习的压力也是很大的,这也是很花时间的。
而且CS的研究生项目是没有基础课的,像那种Python入门、数据结构入门这类帮助学生适应研究生的课程一概没有,因此几乎每一门课都需要我们自学很多知识。所以我们选课的时候也要做好规划,不仅是课程的难度,我们还要关注每一门课是否有期末考试,如果每一门课都有期末考试的话,那么我们也很可能应付不来。而且因为这些课都不是基础课,因此很多课程都会要求同学们有一定的基础,比方说OS课程需要同学熟练掌握C语言,同时还要懂得操作系统的概念并了解文件IO、socket接口等知识。Machine learning这门课则要求同学们有很好的数理背景,对同学们高数、线代、概率以及统计知识,没过关的话甚至连课都不能选,因此同学们如果之前没有比较好的专业背景,申请这个项目时一定要考虑清楚。
说完了这些选课方面的事情,我也和大家分享一下我选的几门课,让大家提前了解一下这个项目中课程的特点,这样大家未来选课的时候也可以做一个参考。
CSOR4231 ANALYSIS OF ALGORITHMS by Eleni Drinea这门课的老师学术背景很厉害,她也十分的专业,在教学的时候更是认真负责,不仅在上课的时候所有的知识点都讲的很细,而且学生如果没听懂她还会回头重述一次。但是因为很多人在上课的时候经常听懵,所以她上课经常会重复,不过这也是没有办法的事情。
另外这门课还有一点让我非常的欣赏,那就是这门课的作业质量很高。这门课平时的作业不是老师随便找了一些烂大街的东西随便应付的,而是她结合课程的设计以及同学的需要精心设计的。在做作业的过程中,同学们还可以真正运用学到的算法去解决实际的问题,也能让同学们学到更多的东西。不过这也导致这门课的作业都是比较有难度的,好在老师两周才会布置一次作业,作业的节奏可以接受。在整个项目中老师一共会布置6次作业,还有一次mid term以及final,作业不需要同学们写代码,只要设计算法写出pseudocode就可以了。另外这门课的老师在上课的时候很大概率会录制视频,同学们看视频自学也是可以的,因此这门课比较适合那些不喜欢去上课的同学选择。
不过这门课的老师对于同学们的期望值很高,我感觉她高估了哥大学生的能力,所以课程内容的设置有些太过丰富,在一个学期的课程中包含了太多的算法类型,同学们需要学习的知识量也是很大的,所以就算拼命学习也只是刚刚可以跟上老师的进度,学习过程可以说是压力拉满。所以同学们如果想要选择这门课,最好之前有一定的基础,不然学习起来难度太大,平时也会很辛苦。还有一点我很想吐槽那就是这门课最后考试的时间很短,只有一个小时出头,但是题目量和一次作业差不多,除了一些大佬可以搞定之外其他同学考试情况都不是很理想,分数也大多十分惨淡。
我之所以先写这门课的情况,是因为我当时考试的成绩真的有些不忍直视。这门课主要是算法设计,而不是背下来已有的算法,所以如果同学们在国内的时候就已经学过算法课或是有算法基础并不是太难,不然需要有很多练习才能融会贯通。总之我觉得这是必学的课程之一,这门课还是很有东西的,只是想要学好还是需要大量的时间的。不过如果你不是数学大神的话,我建议大家选择一些水课和这门课一起上,不然想要拿高分还是有些难度的。
COMS4118 Operating System I by Jae Lee接下来这门课学到的东西很多,这门课的参考书包括了 \u0026lt;APUE\u0026gt; \u0026lt;OSTEP\u0026gt; 和 \u0026lt;Linux Kernel Development\u0026gt;,所以我们平时除了上课听讲之外,课外的阅读量是很大的,大家千万不要忽视这些参考书,因为上面的内容考试的时候是真的会考的。
这门课的老师实力也是很强的,他不仅有着丰富的专业知识,更为关键的是他对于Operating system非常热爱,这点从他平时上课时的热情就可以看出来了。同时他布置的作业同样也是他精心设计的,这门课的作业是基于Linux kernel的某个版本来做的,很多的东西都是需要我们自己读kernel代码才能写出来的,非常的practical。在这门课的学习过程中我们一共需要做7次作业,这些作业都是代码题,前两次的作业内容相对比较简单,因此是单人完成的,而剩下的题目则都是组队完成的,在这些作业之外,课程同样有一次mid term以及final。
但是这门课和前面那门课有着同样的缺点,那就是老师似乎过分高估了同学们的学习能力,课外阅读量非常的大,虽然这的确可以帮助同学们更好地完成课程的学习,但是工作量的确有些太大了,想要驾驭这样的阅读量对于大部分的同学来说都是很吃力的。与此同时这门课的作业量也很大,虽然后面五次作业都是组队完成的,但是作业的内容都是写代码,其中很多都需要同学们自己查资料读代码。另外在做作业的过程中每个人基本都是要自己完成一遍所有的内容的,尽管有同学的帮助这个工作量依然很让人吃不消。
有很多的人说这门课是哥大CS课程中难度最大的一门,我倒不是很清楚它到底是不是最难的,但是我知道这一定是学习需要花时间最多的,当时我也花了大量的时间在这上面,结果导致我算法死的很惨。需要注意的是这门课不是很容易选到,不过前两个星期退课的人也会很多,因为老师上课除了提到书上的知识,还会结合自己的工作、研究经验来补充一些内容,因此没有一定的专业背景和学习动力是比较难跟上的,所以退课的人也会比较多。
这门课前期会学习system call,之后开始进入kernel学习代码,这些内容基本都涵盖在前面提到的三本参考书中,所以后续如果不仔细读参考书的话考试一定会gg的。我觉得如果大家真的很喜欢OS或是想要了解OS,这门课大家一定要上,另外大家如果喜欢实践理论相结合的课程,这门课也是很好的选择。
最后我想提醒那些想要选这门课的同学的是这门课对于同学们的专业基础要求同样是很高的,如果同学们没有足够的C语言基础基本就告别这门课了,因为根本就跟不上教学的进度。另外同学们在选这门课之前最好有基础的Linux使用经验,因为这门课中的代码都是在Linux上写的。负责这门课的的Jae平时还会教Advanced Programming这门课,我建议想要选这门课的同学最好先去听一下AP这门课,这也可以帮助我们打好C语言的基础。
COMS4111 INTRODUCTION TO DATABASES by Alexandros Biliris接下来我要介绍的这门课和前面的两门课有一定的区别,因为前两门课的内容都非常硬核,学习起来也比较辛苦,而这门课的节奏就要慢很多了,课程内容的学习也不是那么密集,在我看来这门课对于那些有一定基础的同学来说,是一个调节自己学习工作量的好选择,同学们也可以通过这门课来划水,从而减轻学习的压力。还有就是这门课并不会涉及到底层DB的时限以及理论结构,而是更重视database design,所以其他专业的同学如果想要入门学习数据库的知识,这门课对他们来说是一个很好的选择。
这门课不仅学习的内容相对基础一些,同时平时的作业以及project也不是很难,同时量也不大,而且除了写网站的部分之外其他的都可以在参考书还有老师的课件中找到,做起来很轻松。但是大家不要觉得这门课就是一门水课,这门课的难度虽然不是很高,但是课程的内容还是比较丰富的,课程中同学们需要自己写SQL以及optional的web programming,所以这也是一门理论和实践相结合的课程,在这门课上我们同样可以学到很多的知识。同时这门课的老师非常的幽默,上课的氛围也是很轻松的,不过有些时候不太容易接住老师开的玩笑,这也比较让人头疼。
但是这门课毕竟没有太多硬核的知识,所以课程的深度还是存在不足的,对于想要理解数据库底层的同学来说这门课不是很适合你。不过听说里面个别session中有些部分还是有难度的,需要使用python来实现index等机制,可是这依旧不能改变课程整体难度偏低的事实。而且这门课授课的节奏比较慢,举例也不会太多,对于没有学过DB的人这门课内容不难学但是老师的上课模式会让同学们接受起来有些困难,我也亲眼见证这门课从最初的满课到后来零零散散只有20人不到来上课,这也很可以说明问题。
所以整体来看对于那些没有DB基础的同学来说,无论是学习相关的概念还是写网站都是比较困难的,需要花很多的时间来自习,而对于我这种有基础的同学来说这就是一门划水课,这也是我上过最轻松的一门课,大家也要结合自己的需要来判断自己是否要申请这么课。
COMS 6998 Topic: CLOUD COMPUTING\u0026amp;BIG DATA by Sambit Sahu这门课的内容主要是AWS相关的知识以及Hdoop、Spark方面的知识,在这门课的学习过程中,同学们可以通过实际编码来学习AWS的各种不同服务,同时还能了解网站架构的新趋势,因此是非常实用的。这门课的学习的学习并非仅仅只有实践,在学习的过程中还需要阅读很多的paper,在这个过程中同学们可以学到更多的知识,因此这门课是充分将理论和实践相结合,质量还是很高的。这门课还有一个优势就是它是开卷断网考试的,难度不是很大,而且考场的监管不是很紧,我在考场上还看到有同学对答案。
这门课的老师我也很喜欢,老师人很nice,如果我们没有选到这门课的话只要给老师发邮件就搞定了,而这门课还是毕业需要的课程,这点对于同学们来说是很友好的。不过老师的印度口音是很重的,同学们也要做好心理准备,适应老师的口音需要一定的过程。而且老师的课件上没有太多的干货,有些内容甚至直接没有课件,如果没去上课的话很容易不知道老师之前讲了什么。
另外这门课的学习整体来看还是比较轻松的,作业是3个Assignment需要利用AWS编程服务完成,外加一个mid term Quiz和一个final Quiz以及一些不定期的Quiz以及最终的Final Project。而且这个课是Group作业,我们如果能力不足的话是可以抱大腿的。不过这门课有一点不是很好,那就是这门课考试的内容是由实践作业、paper阅读以及自己查资料学会的知识组成的,就算我们平时上课认真学习了也不一定可以考好,压力还是有一些的。
这门课我是极力推荐同学们选择的,因为这门课可以学到行业中真正实用的技术,也能帮助我们了解一些和大数据相关的概念,非常有助于我们未来的就业。不过平心而论这门课的知识深度还是有所欠缺的,毕竟这门课牵扯的知识点还是比较多的,如果大家真的对这些项目有兴趣的话,我建议大家在课外自己要多多钻研,多看一些AWS官方的文档,这样有助于同学们提高自己的考试成绩。