原址

阅读本文前需知:

  • 主要从秋季入学的角度进行阐述,春季入学的同学也可以参考参考;
  • 偏SDE软件开发方向,且几乎所有课程的workload都不小,需要你去正确评估自己的能力和方向做选择;
  • 更适合此专业基础比较薄弱的同学;
  • 主要给有需要的同学参考,更重要的是需要你结合当下的选课规则和自身情况去进行选择

CMU作为美国计算机专业TOP5的学校,学生毕业后通常会去到谷歌、IBM、微软等公司工作,年收入也比较可观(在18年的时候平均是8.4万美元),是众多计算机界的学子向往的学校之一。

如果你在这所学校里就读,那么求职向的学生应该怎么选课呢?这里有10门课极力推荐给你。

第一学期:打基础

CMU的课程workload都比较大这是众所周知的。因此,在选课之前,最好在课程官网上找到这个学期的安排表,将想选的课程全部列在你的日历上,如果想选的课程组合起来之后,考试时间、大作业的deadline之类的时间点都是错开的,那这个还是可以的;但是如果是那种集中一段时间搞大事的,什么一个星期考三、四回考试,一个星期有三、四个大作业的deadline,那还是再琢磨一下换换课程组合吧。还有就是,学习氛围也很重要。可以小伙伴们一起选某一门课,大家就可以多多讨论多多交流交流。有人会担心有交流障碍,其实主要看你愿不愿意主动去交流,托福GRE多少分其实没有什么太大的参考性。

[2020 SU] CMU: 15-213\18-213\14-513\15-513\15-613 \14-613 \18-613 Introduction to Computer Systems (ICS) \ Foundations of Computer Systems
这是一门基础的系统课程,必选。它经过了近十年的不断改进之后,变得越来越系统和完善。为了给之后的课程打下坚实的基础,无论你是本专业、跨专业还是今后打算或者不打算做Computer System这一块的,这门课都十分值得去上。除了打基础之外,这门课据说还有一个评估功能:拿A者在CMU今后学习、工作路程会比较顺利,拿B者还得多多努力。

它其实是借鉴了15-213/18-213/15-513课程的,只不过18-613是专门为ECE MS而设计的扩展课程。实际上,15-513的课程质量会更高。在学习这门课的时候,拿15-513的课程视频来进行预习甚至学习也是也是比较有效率的学习方式。

[2020\2015] CMU: 10-301\10-601/10-701\15-781 Introduction to Machine Learning

CMU Machine Learning一系列课程的门槛,必选。特别是对于想要往Machine Learning发展,但是比较犹豫、对自己的能力评估得并不是特别到位的同学,上完这几门课,基本就被安排得明明白白了;如果是在Machine Learning 方面有基础的同学,这课就相当于复习巩固,也挺好。为什么说那些犹豫的同学会被安排得明明白白?是因为上了这几门课之后能拿下A的,就相当于拿下了在Machine Learning方面学习的通行证;拿了B的同学,那还是考虑其他对数学要求没那么高的方向吧,比如SDE什么的。另外,这几门课的老师还算是比较好的,评分方面不会很严格很死板,拿下A其实并不算很难的事情。

虽然名字看起来几乎一样,但是这三门课并不是一样的课。10-601是相对基础的课程虽然有时候有能po到简历上的project,但是10-601不是核心课程;10-701的质量比较好,很理论几乎都是推公式,是核心课程,但是这是CS的,不是ECE的课程,如果要上的话会占用一个非ECE课程名额;18-661是ECE核心课程,内容偏理论。通常来说CS课程的质量远比ECE课程的质量要好得多,估计是近几年CS的课程火了之后,ECE跟着开设的。另外,在选课之前要好好打探清楚任课老师,这几门课每学期的老师都不一样,通常来说,任课老师决定授课内容和质量。

另外,第一学期重在打基础,基础不好的同学还可以选这两门mini course来补一下:

17-681 Java for Application Programmers
17-683 Data Structures for Application Programmers

这两门如果只能选一门,那肯定是17-683了,简直数据结构、算法什么的不好的同学的必选项。这两个课好就好在都是同一个教授授课,即使你为了节省非ECE课程的学分而只选17-683,而17-681的课程只找那些上了课的同学借视频来看,也可以提问教授17-681里边不懂的内容。Terry Lee是这两门课的教授,他的课比较详细,很有逻辑层次。这两门课程分别上半个学期,17-681前半学期,17-683后半学期。只要你认真上了这两门课,虽然不能让你立马成为大神,但是自己刷题的时候看明白解法是没问题的。

18-652 Foundation of Software Engineering

sv、se的必选课。这门课会用到很多web tool、framework等等之类,可以给简历增添不少亮笔;如果你选了一个市面上运用比较广泛比较流行的技术栈,什么react/redux之类的,那不得了了,你这个简历怕是要开光了。这个课的过程是这样的:学生组队做一个老师规定好的项目,一定要用node(express)作为后端。一开始,就是搞一个聊天室,一个hw0用http://socket.io作中介的非常基本的nodeJS为后端的那种。组队项目对每个人的要求都一样,每周要给助教报进度,每个组每两周一个iteration、每两周给助教demo。想上这门课的同学,建议提前去打听一下作业,然后自己估摸一下自己能不能上,如果感觉很难,就不要去坑队友了…

[2019] CMU ECE MS项目选课指南 - 图1

第二学期:重提高

这个阶段选一些实用且质量不错的课程是比较有利的选择。

1、15-640 Distributed System

CS本科的必修课之一,必选。对后端比较模糊的同学,这门课值得你拥有。只不过春季入学和秋季入学的课程内容不完一致,秋季开学的用GO语言,春季开学的用Java。课程工作量当然也比较大,一般是:4次作业、4个项目、2次期中考试。这个课是没得分来调的,即使全班都考了B也不调,就是这么刚,考多少就是多少。

2、15-719/18-847 Advanced Cloud Computing

这是一门ECE的核心课,仅春季学期开设,方便毕业,可选。比Distributed System low一点,但是又比Cloud Computing的level高一点。这个课和Distributed System有很大的重叠,可以和Distributed System同步上,也可以先把Distributed System上完再上这个课,这样会比较轻松一些。千万不要先上这个课再跑去上Distributed System,怕你理解起来不容易,毕竟这个课的老师讲课质量不够Distributed System的好,有点随意。这门课的优点是workload比较小。

3、18-845 Internet Service

这是一门由CSAPP授课的课程,仅春季学期开设,可选。它和ACC、DS有大量重合,质量那是杠杆的,一门顶三门,人间很值得。这个课程一般一个班20人以下,一学期缺勤不能超过2次,上课的时候主要是大家围坐在一起,开口参与paper的讨论,有问题老师都亲自解答,不但提高了自己的表达能力,还提升了自己的思维眼界。这样看来,每一节课都摸不了鱼,得认认真真地提前准备好才可以,要不然面对这么多大牛,你一开口就让别人感觉奇怪的知识点增加了,怕你找不到地缝钻。课后作业主要是每个星期要写两篇论文读后感,还有一个Individual Project和一个Group Project是完完全全开放性的。对于这些,老师会更care里边有没有你自己的思考和见解。

4、17-437/17-637 Web Application Development

这是一门加持SDE方向工作简历竞争性的课程,可选。最后一个学期面临找工作的压力,为了能把这个课放到简历上,强烈建议你一定要在最后一个学期之前上。这门课不难,但就是节奏比较快,只要你态度端正认真,就能够学好。基本上每个星期作业都少不了,有时候是Homework,有时候是Project,这些都能够帮助你对全栈web开发有个基础了解。

[2019] CMU ECE MS项目选课指南 - 图2

第三学期:减压力

一般这个学期大家都会面临找工作的压力,所以选课主要选择那些难度相对低一些的课程会比较好。

1、16-720 Computer Vision

一般来说,这是一门没有考试没有Project,整个学期就5个作业的课程,可选。学生一般把自己的时间规划好,按时写完作业就是A的级别了。但是据说这门课每学期都有变化,课程的内容和质量得多观察一下才是。

2、11601 Coding Bootcamp

这是一门刷题课,仅春季学期开设,可选。教材用的是Cracking the Coding Interview,需要你有一定的数据结构和算法的基础,没有的话…那还是选一下上前边说的那个mini course吧,17-683 Data Structures for Application Programmers。

3、11-642 Search Engine

这是一门需要推公式的传统的课程,需要读论文,写论文读后感,可选。课程质量一直不错,作业量主要依个人兴趣想法而定。

除开以上十门课程,这里另外推荐一个专门找工作的课程,非常实用,建议第一学期去上:39-699 Career & Professional Development for Engineering Masters Students。这门职业课是来自CIT学院的,只有半个学期,是教你简历、Linkedin、Handshake等方面的知识的。实习工作方面,CMU的career fair是很不错的,建议好好准备;找正式工作可以career fair再加上学姐学长之类的内推。

在CMU有一点很重要,就是不·要·抄·袭

CMU向来对这个都非常严格,基础大课比如Introduction to Machine Learning、Introduction to Computer System这类,更会是严格中的战斗机。像Cloud Computing 个别课程,你在每道题目上的停留时间长短将会被老师追踪,拿来判断是否抄袭。Project把规则讲明不能使用已有代码的情况下,即使你再在已经存在的代码上花大量的时间来改进,甚至做出来的项目都和原来的不一样,这也还是算是绝绝对对的抄袭。不管你是学霸还是学渣,一旦被追踪到抄袭、被抄袭之类的,你将面临挂科、休学、退学等的惩罚。

[2019] CMU ECE MS项目选课指南 - 图3

其实,在CMU学习压力大、节奏紧张,写作业写到崩溃,甚至错过deadline,是部分学生会出现的情况。(开学期间)这里没有party,也几乎没有有意安排的娱乐时间,绝大部分的人都在学习。有人从早上十点开始学习到凌晨两点,每天如此;也有人坚持每天早睡早起地去学习。只要勤恳努力,虽然并不一定能拿高绩点,但是毕业是没问题的。另外,在CMU的生活还算可以,每餐都有好多家中餐外卖可以吃。还有,匹兹堡气候比较干燥,冬天比较长,要记得保湿好自己的皮肤哦!