【选校信息-CS】卡耐基梅隆大学CMU ECE Master(ML/System等)选课+项目介绍+申请录取+就业就读(2019)
2018 fall 刚毕业CMU ECE项目就读-若干CS相关课程介绍与MS ECE项目选课推荐(由于我CS基础薄弱且走的是偏传统system的选课路线,下面的内容会侧重于“系统”和“转码”一些(想学习ML和DL的同学对不住))
编辑于2020.01
楼主于18 fall入学CMU并就读于MS ECE项目,最近刚刚毕业。一年多以来在CMU也算是接触了许多CS相关的课程(主要由ECE/CS/ISR等学院或部门开设),并遭受了大量毒打,在此总结一番供大家参考,同时也算是给出针对MS ECE项目的一些选课建议。由于我CS基础薄弱且走的是偏传统system的选课路线,下面的内容会侧重于“系统”和“转码”一些(想学习ML和DL的同学对不住了hhhh)。
写在前面:虽然可能很多人已经非常熟悉了,不过我还是想再简单介绍下MS ECE。该项目为授课型,春季秋季两学期都会招人,bar忽高忽低,时而缩招时而扩招,我们这届应该有近200人(国人占比超过1/3),算是扩招比较厉害的一届。项目规定在一年半,也就是三个学期内修够96学分,并维持大于等于3.0的GPA即可毕业。通常来说CMU的每门课学分是12分,这意味着获得8门满足要求的课程成绩便足以达到项目毕业要求。不过鉴于每学期至少要选够36学分来维持F1签证身份,大家一般都会选择至少3门课/学期,这样最后往往会以修够9门课结束。此外,ECE规定项目期间所修课程数目不能超过10门(准确来说应该是所修学分不能超过120学分),故而会有人按照3-4-3或者3-3-4的数量来选课(不过据我了解3-3-3模式还是占据了大多数)。还有一个要注意的是,ECE目前仍保持着48学分的选课外课限制:换句话说,按照12学分/门来计算,非CIT学院的课程最多只能选择4门。不过这对于走system选课路线和转码大众来说已经完全足够。选课前如果在CIT学院下(主要指ECE和INI)能找到相关的课程或者cross list这些,可以适当优先进行考虑。另外,MS ECE虽为授课型项目,但依然可以进行research,许多lab的research project可以拿来抵学分,这对于不想一心上课的同学来说也是比较友好的。
18600 Foundations of Computer Systems
CMU大名鼎鼎的计算机系统入门课15213/15513的ECE版本。一个有趣的事实是CMU Pittsburgh主校区的zip code也是15213。如今ECE版本的课号已经从18600改为了18613,内容和讲授风格也越来越向15课程靠拢。个人认为这是转码系统方向的必修课,内容广泛且有深度,从0/1bit操作这类基本的知识开始,逐渐涉及到进程、cache、并发、I/O、虚拟内存、proxy等系统概念,且授课内容会辅以相关的lab进行练习巩固。上完之后可以对传统的计算机系统体系有一个基本的全面的认识,也可以为应对接下来的高阶系统课打一个比较牢固的基础。极力推荐大家第一学期去上,如果老师讲的不好(18 fall的John Shen长期在Intel和Nokia任职,硬件知识丰富然而讲课过于催眠,另一位老师Saugata Ghose则是第一次讲这门课,基本也就是照着PPT念)可以去蹭513那边的课,或者看513对应的视频。此外建议有时间可以阅读配套课本CSAPP的对应章节,帮助加深理解。
课程作业包含7-8个lab(我们当时是7个,不过自18613开始多了lab 0,用来帮助大家熟悉C),要求全部用C在Andrew Unix machine环境下实现,autolab测试,最后分数包含coding style。lab内容也很丰富,包括但不限于使用给定运算符进行bit manipulation,利用gdb阅读调试汇编,实现简易shell,实现malloc函数,进行cache simulation,实现支持HTTP GET请求的proxy等等。所有lab都会提供start code并且handout也写得比较清楚,每个lab给的时间也比较多,因此总体来说完成作业要求并不是特别困难(不过后半学期时间花费要比前半学期多一些)。相比之下,考试包含一个midterm一个final(18 fall是两个midterm),题量大且题目灵活,难度就比较大了。由于这门课过于出名,上述内容网上已经剧透得差不多了,关于课程和lab的更多信息大家还可以参考CSAPP的官方网站:http://csapp.cs.cmu.edu/3e/labs.html。
17637 Web Application Development
由ISR开设(因此会占用48学分外课名额),是CMU为数不多的讲授web有关知识的课程。课程内容比较基础,但是很广泛,包括但不限于HTTP、Django相关概念(例如MVC)、ORM、cookie/session、database、DOM、jQuery、web security、WebSocket、mobile等。过去春秋两季的老师不一样,讲课风格也不一样:我在18 fall选了这门课,由Charlie Garrod(ISR大腿,讲课清楚认真负责的好老师)和Joshua Sunshine讲授,当时他们开了好多section,每个section只有十几到二十个人。Charlie课前会布置许多视频和材料看,因此section一般只讲十几分钟,剩下的时间便是让我们动手实践完成in-class exercise,同时还会有几个TA在教室里为我们答疑解惑;到了19 spring老师换成了Jeff Eppinger,课程也变成了lecture形式的授课,并取消了section和TA参与的in-class exercise部分。哪种方式其实都有利弊,未来也说不准会改革或者产生什么新的形式,因此选之前可以发邮件问问老师。
课程作业包含两部分,前半学期基于Django实现一个小型网站(以前的目标是实现一个被称为Grumblr的nano blog,有点类似于破产版Twitter;从19 fall开始作业要求变成了MenuServe,一个很弱的连锁餐饮网站)。网站的实现要求会被分成若干个homework,网站本身也会以incremental的形式被不断开发:最开始是用HTML/CSS搭建纯前端界面(此处可使用Bootstrap,Materialize等),之后结合Django的MVC pattern不断添加功能;随着功能的完善再增加Validation/Authentication/Authorization等要求,以及加入一些Ajax flavor等等;最后还会将网站部署到cloud上(AWS/Azure/GCP/Heroku/DigitalOcean等,不过19 fall强制使用Azure,不知道以后会不会有所调整)。此外还可能涉及前后端测试、CI/CD pipeline搭建等等。所有作业会提交到GitHub的课程repo里,因此写作业的过程中会(大量而简单地)使用git。后半学期则是组队(2-4人)自由提想法并实现一个稍微大型的网站。可以参考的网站类别有online game、类piazza、类Tripadvisor等。考试可能没有midterm但一定会有final,除了选择、填空、简答等题目之外,一般还会在白纸上手写一个Django app(个人感觉略硬核)。
这门课对于跨专业转码新手非常友好,原因有几个:1 Diango本身使用起来比较简单,易于上手;2 web的许多概念相比于其他系统课而言理解起来也较为容易;3 上完课以后简历上会增加至少两个web相关的项目,多多少少也会对找工作有点帮助。推荐无项目积累的、对web感兴趣或者希望以后从事web前后端开发的同学试选。
15640 Distributed Systems
DS是CMU非常著名的系统课之一,内容丰富翔实且深入浅出。春季主要由Satya(Mahadev Satyanarayanan,AFS和Coda的发明者,edge computing等云计算领域的先驱)讲授,讲课节奏较慢,内容侧重于底层基础,涵盖内容大体有RPC、caching、distributed file system、scaling、failure recovery等,project基于C和Java完成;秋季老师换成了Yuvraj Agarwal和Dave Andersen,内容弱化了caching并加强了分布式系统的一致性部分,在我看来也更偏重应用一些,此外project基于Go完成。
课程project均使用autolab提交,且和其他系统课一样带有coding style分。春季的project有实现基于RPC的远程文件系统、实现一个简易的AFS-like distributed file caching system、模拟scaling policy以及实现基于2PC的带有failure recovery功能的简单图片合成系统;秋季的project由于没有上过课不太了解,在此省略。除了project之外,该课还有4个homework贯穿整个学期(春秋季都有),题型主要为简答题和计算题,跟考试题目类型相似。考试包含一个midterm和一个final,题目不难但题量较大且考察细节较多,因此平均分一般也不高。总体load偏大,上完会觉得很充实。
需要说明的是,DS的prerequisite要求600/513至少是B,否则没法选上;此外DS给分非常严格,分数历来没有curve,因此注重GPA的同学选择时请慎重。不过在我看来能够学到东西比拿高分其实更为重要。还有一种说法是,上了DS之后你就具备了跟工业界做系统的人基本的扯淡能力(或者说别人在扯淡的时候你大概知道他们在说啥,不会非常懵逼),对于system design也有概念上的不少帮助。强推。
15719/18709 Advanced Cloud Computing
ACC是ECE两大高阶系统好课之一(另外一门是下文的Storage Systems即SS),由Greg Ganger和George Amvrosiadis这一对黄金组合开设(此外还有Majd Sakr辅助)。两人都是云计算、分布式文件系统、存储系统等方向的集大成者,其中Greg还是PDL的director(PDL由CMU灵魂人物Garth Gibson创建,是CMU非常厉害的进行系统方向研究的lab,跟工业界联系也很多)。两人讲课各有自己的特点,Greg偏幽默,喜欢深入浅出,George则更加严肃认真一点,喜欢互动也更多一些(也更加催眠一点hhhh),两人经常交叉授课,在自己侧重的领域里侃侃而谈。每节lecture之前老师都会布置几篇论文或者技术文献要求阅读(不过几乎没有抽查过),用来帮助加深理解概念。课程内容包含了cloud computing这一领域的各个经典概念,例如elasticity、virtualization、scheduling、fault tolerance等,还有各种cloud、distributed file/storage system实例等等,可谓非常精彩。因为联系紧密,Greg他们也经常请FLAG的大佬们来作guest lecture,因此我们也得以窥知工业界的有关前沿技术进展(虽然一般都听不大懂)。
课程project有三个,分别是scaling policy设计、基于spark的大数据ETL以及模拟Kubernetes scheduling,均基于AWS完成,涉及到的语言有Python和Go等。project总体load适中(除了spark ETL这个会比较让人头大),代码量不大,但writeup往往不是很清楚,而且一些配置操作细节比较繁琐,因此对新手可能不太友好。考试包含一个midterm和一个final,风格非常鲜明,题目也很灵活:Greg说比起枯燥的概念记忆他更喜欢考察我们是否理解了各个系统的特点与design的tradeoff,因此题目多为简答题,需要给出明确的选择并利用课堂所学来论证你的观点。上完这门课记住的一个深刻的道理就是一切计算机系统的利弊分析都可以用一句话来概括:it depends(可能听起来比较直白,但真真切切体验过课程之后相信大家能够明白这句话里的深意)。
说到ACC就不得不提一下其“低阶版”课程15619(Cloud Computing):这门课load非常重,作业基本一周一due一周一quiz,但几乎也只是一直在写作业而已,没有特别多lecture内容,也没有paper阅读要求等。CC对简历空白的小白来说非常有帮助,同时挑战也很大;ACC则更多帮助你知其然也知其所以然。两门课各有所长,CC因项目的繁多和浅显而更加褒贬不一(用我大神室友的话来说CC的project就是类似于把自己的名字重复写1000遍),我个人也更推荐选ACC(不过上过了CC就不需要再选ACC了)。
需要注意的是,ACC目前只在春季开设,而CC则春秋两季都可以选。另外,可将DS+ACC选在同一学期上,两大系统课内容交相辉映,收获会更多。
17514 Principles of Software System Construction
由ISR开设,一门类似于软件工程的好课。课程内容如果用一个词来概括就是design,从class level到project level再到system level都有涉及,其他还有design pattern、framework/library、testing、concurrency等若干software相关概念。总的来说讲的内容比较基础,但非常经典和实用,对于面试也很有帮助。
有人也会把这门课当成一门Java语言课来上,原因是homework和课堂例子均是基于Java(Java作为纯面向对象语言享有此待遇也是理所应当)。这门课与Java还有极大的渊源,那就是Joshua Bloch(Java Collections Framework的设计者之一,Effective Java的作者)曾一度在CMU讲授它。作业共有6个,除了第5个是team based以外其他都是individual,其中比较好玩的有设计并实现Carcassonne桌游(带GUI的)和写一个data visualization framework等。除了第4个作业也就是Carcassonne比较耗时和难写(带测试的话代码量可达到2000+行Java)以外,其余load都还比较正常(设计的耗时往往可能比写代码还要多,因此推荐想好了再开始敲hhhh)。考试包含两个midterm和一个final,均不是很难。推荐转码新手上这门课,可以一定程度上丰富简历并补充软件设计的基础知识,还可以顺便写点(相对高质量的)Java。此外,类似于17637,大量依赖于GitHub和Travis CI的作业提交方式也会帮助掌握git版本控制技能和了解CI/CD pipeline的使用。
15651 Algorithm Design and Analysis
算法在CS中的地位不言而喻,而这门算法课也是我在CMU最喜欢的课。19 fall的老师是Gary Miller(Miller–Rabin素数测试算法的提出者之一,651课程的创始人,已经讲授这门课40余年)和Danny Sleator(splay tree的发明者,amortized analysis等领域的先驱),两人的组合就如我队友所说,仿佛“有头脑”和“不高兴”:Gary总是面带微笑,讲课时常自嗨,语速飞快;Danny则总是眉头紧锁,随时准备应对各种奇怪问题。比起个性鲜明的老师们,这课的TA也是风格迥异,不过总的来说都很厉害。印象最深的是有个本科生年纪轻轻就进过了ACM world finalists,感觉给我们当TA有点屈才了。课程内容非常广泛(和算法导论有一定重叠),也难得保持了深度:除了DP、DFS、max flow、hashing、LP等这种经典必讲,还有一些老师的私货,例如splay tree、ball growing、计算几何学、backward analysis、parallel MIS等等。
作业共有7个,均可3人组队讨论(一个人很难刚得动),其中3个是oral presentation,另外4个则需要提交LaTex。作业构成几乎是清一色的3道算法题+1道coding。算法题一般跟课上所学紧密相关(往往是要求针对描述的问题,给出一个时空复杂度满足要求的算法,然后证明算法的正确性等等),难度较大,经常一杯茶一包烟一道题目想一天,往往需要piazza疯狂轰炸TA或者去office hour求助来获得思路,此外跟队友的讨论交流也很重要;coding也会跟所学有所关联,不过往往是带迷惑性的,例如看上去需要max flow解决的问题,实则必须用DP才不会time out之类的。coding是基于autolab测试的,不过case数量很多,时空复杂度要求很高,且给分很严格,错3个case及以上就是0分。除了变态的作业以外,课程还配有一周一quiz,帮助大家巩固一周所学;考试则包含两个midterm和一个final,难度较大(犹记得第一次midterm满分100的情况下均分50出头的惨状),所以总的课程load可以说是非常大。课程给分也很是严格,curve以后只有20%的A,其余大概会有40%左右的B和40%左右的C,以及若干fail。但经过这样的历练,收获真的会很多,对许多算法和数据结构的理解也会有质的提升,我认为非常值得。
需要指出的是,这门课对刷题没有特别多快速直接的帮助:coding代码量不算大,且算法题目侧重于理解、推导和证明,许多复杂的算法leetcode里也大概率用不到。它带来的提升是内在的,潜移默化的,有点像武侠中提升内功的感觉;而刷题和其他一些刷题课则更多像是丰富招式(当然不排除也有很多人通过纯刷题来提升内功)。此外由于老师讲课速度较快,作业和考试难度较大,耗时较多,建议零基础的人慎选。
15746/18746 Storage Systems
ECE的另外一门系统好课,同样由Greg Ganger和George Amvrosiadis开设(值得一提的是Greg是746这门课的创始人),风格与ACC相似,课前要求读paper,lecture内容由老师交替讲解,后半学期会带来许多guest lecture(印象最深的是来自Google的对GFS继任者Colossus的讲解,暴力美学震撼人一脸),等等。正如课名所示,课程内容包含了SS的方方面面,既有微观如SSD/HDD的底层讲解、FFS/LFS等经典文件系统的实现细节,又有宏观如RAID(Garth Gibson以前也经常讲授这门课,感觉能够听RAID的发明者讲RAID一定很幸福)、分布式文件系统和存储系统实例,还有data integrity、redundancy、backup等相关概念和应用,可谓无所不及。
project有两个,均基于C/C++完成,运行和测试环境均部署在AWS上,但分别被拆成了3个checkpoint,因此贯穿整个学期。第一个是模拟实现SSD中的flash translation layer(FTL),涉及address mapping、garbage collection、wear leveling等概念,相对比较简单;第二个是基于FUSE实现一个hybrid file system(local SSD+AWS S3),功能较为强大(例如支持云端传输的block-level deduplication,支持snapshot和caching等等),难度较大,代码量也较多(轻轻松松3000多行C)。随着project的进行,前半学期会过的比较轻松,后半学期则会比较痛苦。跟ACC一样,考试包含一个midterm和一个final,题目灵活,深度考察对SS领域各种概念的理解,同样的“it depends”的flavor。考试最有意思的应该是试卷最后的bonus questions,印象最深的一个问题是请选择一种动物作为746的吉祥物,然后给的参考答案是”A beaver, because it cares about logs. There might be a fight with MIT, but totally worth it :-)“。
需要指出,SS只在秋季开设,如果春季上完ACC并喜欢这两位老师风格的,不妨秋季试选(我当时选择SS的原因之一就是非常喜欢听Greg讲课;另一个原因是少有大学能够以存储系统为核心开设系统硬课,来一趟CMU不体验一下的话实在可惜)。此外hybrid file system作为一个完整的project放在简历上,同样也会很拉风。
关于其他若干课程(不连贯的)碎碎念:
17681 Java for Application Programmers
17683 Data Structures for Application Programmers
ISR开设的两门mini课,均由Terry Lee主讲,广受好评,极其适合没有代码积累、不了解OOD、对数据结构无概念的小白入门。大神也可以当纯水课来上。
15618 Parallel Computer Architecture and Programming
PP是CMU的经典CS系统好课之一,其中一位老师Randal Bryant同时也是CSAPP的作者之一。每年waitlist都会被排爆,一般是先交作业先排进去。project由individual和team构成,据说load较大但收获很多。身边也有人凭着课上所学最后去了Apple做GPU加速。强推。
18645 How to Write Fast Code
ECE开设的破产版PP,load小很多,不过课程质量也下降了很多。建议对并行计算感兴趣但又不想硬刚PP、或者不想占用48学分名额的同学试选,选上之后可以去蹭PP的lecture视频。
15645 Database Systems
DB也是CMU的经典CS系统好课之一,对于数据库感兴趣的同学一定要选(虽然不一定选得上hhhh,由于这课只在秋季开设且火爆程度过高,同样需要先交作业先排进waitlist)。主讲人Andy Pavlo是DB领域的狂人,曾有类似“我所热爱的事物只有两个,一个是我老婆,另一个就是database”的狂言。此外他还是上文所说的PDL的成员之一,跟Greg、Dave等人交流密切。
良心的是,老师会对所有lecture录制视频并发布在Youtube上(里面会屏蔽大量Andy上课所讲的f word和s word),piazza即使不选课也可以加进去,因此选不上或者不想选的情况下可以自己跟课。另,课程project均基于C++,据说load很大且对没写过C类语言的人非常不友好。
此外,Andy在春季还开设了另一门DB有关的课程 15721(Advanced Database Systems),个人对此门课程了解不多,不过据说load比645要小。
15641 Computer Networks
CS相对小众但质量很高的网络课程。老师Justine Sherry从伯克利跳槽过来,讲课活力四射,经常发糖(是真的发糖),课程内容设置也比国内的一般计网课程强了好几档,具体从作业要求基于C实现TCP、实现类Netflix streaming功能等等就可见一斑。load较大,据有人说在CS众多系统课中仅次于OS(个人觉得见仁见智)。鉴于CN在CS中的重要性,推荐一上。
18741 Computer Networks
ECE版本的CN,但内容跟15版本相差较大(偏重链路层和信号处理多一些),load也相对较小。不想占用外课名额但又对CN感兴趣的同学可以试选。
15410 Operating System Design and Implementation
15411 Compiler Design
CMU的两门镇校神课,虽然课号都是4开头但load巨大(从15学分分值也能看出其分量)。身边有大佬坚持了一学期扛下来了OS并最终去了Apple写kernel;TOC的时候也记得有个小公司说如果你上过了OS并且成绩还OK就可以直接来我们这里工作。虽然两门课加起来就要占30学分外课名额,但如果真的都想上的话,有一个操作空间,就是上文所说的513课程其实可以暑假先修,只占用6学分(但是要多交6学分的学费hhhh),这样同样可以实现四门CS外课的壮举(15410+15411+15513+15XXX)。
15750 Graduate Algorithms
Gary于春季开设的另外一门算法课,内容更加高阶,包含有Van Emde Boas tree、斐波那契堆等这样的神仙内容。内容与651有部分重叠,对算法感兴趣又觉得651简单的同学可以直接考虑这门课。
15662 Computer Graphics
一门很有趣的计算机图形学入门课,内容涉及图形学领域的方方面面,作业是基于OpenGL实现若干与rasterization、animation等相关的project,load较大,debug时间较多。有人推荐PP+CG一起上,据说会有奇效。相关课程还有15663(Computational Photography)、15664(Technical Animation)、15666(Computer Game Programming)等。
15688 Practical Data Science
据说是CMU数据科学版本的CC。
17645 Software Engineering for AI-Enabled Systems
ISR于19 fall新开设的软件课。有朋友评价还不错。欢迎大家尝试。
14741/18631 Introduction to Information Security
ECE可以一上的一门security课程。作业以CTF形式呈现,比较有趣,但lecture比较无聊。load因人而异但一般适中。另外一门security相关的课程是18730(Introduction to Computer Security),据说艰深晦涩且对GPA不太友好。
11755/18797 Machine Learning for Signal Processing
ECE可以一上的“缓冲”课程。想要刷题找工作且本科具有信号和图像处理背景的同学可以考虑。
24780 Engineering Computation
水课。
18794 Pattern Recognition Theory
水课。
18749 Building Reliable Distributed Systems
大水课。
写在后面:楼主在CMU接触过的CS相关课程基本都呈现在这里了。总的来说CMU的系统课大多数质量都很好,认真上下来真的是收获颇丰,虽说找工作peer pressure较大但靠着学校的reputation和所学知识大家最后也都基本上岸了。在这里的一年多虽然比较苦逼,但也收获了很多难忘的回忆,毕竟my heart is in the work。在介绍和评价课程的过程中我尽力保持了中肯,不过难免还是会有主观因素在里面,希望大家能够多多理解。
Credit to Silver_Bullet
*******************************************************************
2018 fall CMU ECE ML/System选课介绍
编辑于2019.03
国内本科,cmu的workload比国内大多了,在国内我除了大三考托福gre那段时间以外没去过图书馆,一周能有一两天学习就不错了,到这儿以后在学校奋战到一两点坐escort回家成了家常便饭。其实workload主要是作业带来的,cmu的大部分课程作业质量真的不错,能够帮助你更好地掌握所学(现学)的知识,一些好的course project也可以放在简历上。
上学期我的状态typically study everyday:)上学期末找到实习以后这学期决定对自己好一点,稍稍划水,于是大家可以看到我现在有时间在论坛发帖码这么多废话。A/B不难,身边大部分同学都是A/B
研究机会:上学期跟教授做research所以联系还算多,这学期划水以后也不做research了,跟教授也基本没有联系了。说到research,cmu很多cs项目有directed study或者research course,ECE也不例外,可以通过找到教授注册research course来抵学分,或者你想直接找教授打白工也完全ok,但是想拿钱当RA就难很多了。
没有跟外国同学party过,平时基本都是中国人一起玩。
获取求职信息的主要途径:LinkedIn. Career service聊胜于无吧,能帮你修改简历(仅限格式/语法错误)教你一些interview技巧,我觉得作用不是很大。Career fair对我来说作用约等于0,可能因为cf来的比较早我当时简历写得不好,聊天聊得也不好,导致我收到的面试里面只有一家来自cf。
比较喜欢的方面:好课程的老师和TA真的水平很高。
在村里真的 无 聊 死 了。生活跟国内相比也无趣了很多,我快要自闭了:)平时最开心的就是每周打打球,放假了跟好友一起约饭、喝酒。
来美国之前,T 105,口语只有23,一开始很难自如地跟歪果仁交流,遇到口音重的根本听不懂在说什么。现在好了很多,上课基本都能听懂,这学期有门课team project俩队友都不是中国人,交流得倒也挺好。
申请录取和就业情况:
据说ECE录取的variance很大,18fall可能录了将近100个中国人,前面几年有只录了几个中国人的情况,不知道今年怎么样。就业的话我认识的ECE同学大部分也都拿到实习offer了,往年找全职的情况也都挺好。
关于CMU ECE program的情况,其他帖子说得很详细,我主要想介绍一下对于不想做纯sde的同学如何利用ECE的选课政策学到自己想学的东西。
首先ECE三个学期96学分毕业,但实际上为了保持F1学生身份,每学期至少36学分,所以其实是108学分毕业,但是最多又只能选120学分,CMU正常课程是12学分,mini一般是6学分(没修过mini不是很了解),所以如果不选mini的话正常是9门或者10门课毕业。
ECE的选课政策允许我们选择4门CIT(工学院)以外的课程(肯定都选SCS的了),看起来不多,但是其实由于ECE有很多和CS cross-list的课程(即同一门课,一起上课但课号不一样)以及很多CE和ML方向的课程,所以对我来说其实4门SCS课完全够用了。
说到ML课程,墙裂推荐18661,ECE的Intro to ML,内容比我校网红课程10601要好很多,10601太水了,而18661能够帮助你夯实理论基础,而且还不占院外课程名额。然后由于我本人是想做NLP方向,找的实习也是做NLP,所以我把4门SCS课名额基本都放在了NLP/ML相关课程上,上学期选了11661 Search Engines (不是非常推荐,内容和作业都很好,但是考试死记硬背太蠢了),这学期选了11747 NN4NLP(牛逼哥的课是真滴挺牛逼,可能是我来cmu以来听得最认真的一门课了)以及10707 Deep Learning(后悔没选另一门deep learning 11785,10707的课程设计问题比较大,但是好在还有team project,想做啥尽管冲鸭)
System方向的话CMU也有一堆好课,比如镇校神课15513 Intro to Computer Systems,ECE有与之对应的18600,除了513的绝大部分内容以外,还加了很多instructor老沈的私货,比如hardware, superscalar blahblah,lab大纲和513基本一致,替换掉了一个,后面几个lab甚至比513要难(这学期貌似改叫18613了,课程难度更大了)。第一学期选了15513/18600是之后选其他系统课的基础,有一些教授要求很严格,如果你没有先修513/600就不给register. 进阶的系统课有18709/15719 Advanced Cloud Computing, 18746/15746 Storage Systems (ECE/CS cross-listed), 15640 Distributed Systems, 15xxx Computer Networks 和 18xxx Computer Networks(两门CN不是cross-listed,内容差别比较大,课号由于我没选过这两门课也不知道,懒得查了),当然还有CMU workload据说最大的Cloud Computing,(Advanced Cloud Computing虽然advanced,但是load小一些,然后CC不需要513/600先修,所以第一学期就可以上)。这其中我这学期在上ACC,打算下学期上DS,CN和SS大概不会上了,实在不感兴趣,然后大概再选ECE的ML4SP(和11785是同一个老师)以及18794 Pattern Recognition(大水课,但是好歹也是ML方向)。这么一来四门院外课程的名额也就用完了,三学期下来ML/NLP/System想学的基本都能cover,当然比重不一样,我偏重ML和NLP,想偏重system的同学选择就更多了。
P.S. ECE其实算是CMU比较自由的项目了,在我们这届之前甚至连4门院外课程的限制都没有,SCS课程随便选。有了这个限制以后其实也并没有束缚太多,而且ECE没有必修课!理论上来说你想做任何方向都可以选到合适的课程。
Credit to ChrisQiu
蟹老板背景:布朗大学计算机系2010届校友,自2009年起创办留学咨询工作室,累计top 30全程服务案例100人以上
主申方向:CS/DS/BA/MIS/美国本科TOP 50学校
申请服务:签合约保证录取,6万元/12所学校(5月1日前签约5万),自2019年起每年限10人
语音付费咨询:700元/小时(半小时400),可指导:选校定位、DIY申请、文书构思、面试模拟、背景提升、职业规划、编程学习等
预约服务请加小助理微信:895718791(注明:留学申请;不提供免费咨询)
DS/BA/CS/MIS精华文章整理:http://www.bossqiao.com/