先简单介绍一下自己,本人就读于CMU ECE项目,接下来就跟大家分享一些我在CMU的个人经历(大部分是关于课程方面的体验),希望看完本文能给你带来一些参考。
CMU的ECE即卡耐基梅隆大学电气与计算机工程系,ECE Master课业长度一般为1-1.5年,春秋两季都招生,招生人数最近几年不是很稳定,有时会扩招。授课地点有四个,分别在匹兹堡、硅谷、卢旺达和中国。硕士项目几乎没有奖学金,需要自费,每年学费大约在47300刀,其他费用每年大致为14233刀。该项目共需修96个学分,以授课内容为主,没有毕业论文,具体情况下面详细介绍。
毕业要求
先说一下ECE Master的毕业要求:三个学期96学分加上GPA3.0+。每门课一般情况下是12分,修够96个学分差不多8门相应课程达标就可以,但是对于国际生来说,为了维持F1的签证身份,一般大家会每学期至少选择3门课,也就意味着在整体的课程选择上,每学期选择的课程数量相对均衡,每学期3门,最后修够9门课毕业。不过,ECE还规定了所修学分不能超过120学分,一般课12学分、mim课6学分,最好提前安排好。
课程选择
说完了学分,下面来说说课程选择。ECE在CMU已经算是选课自由度很大的项目了,没有必修课加上CSC课程不限,不过目前最多只能选48学分的外院课,一般就是4门课。所以在选课时先看看学院下有没有同方向相关课程,同时其实很多课都属于一起上课但是课号不一样的cross-list课程,基本上是够用的,实在没有的话再考虑外课。除此之外,research project也是可以抵学分的,这也就给了想要做研究的同学更大的自由度。
总体来说,ECE Master选课比较自由,且在了解课程的基础上,想选到合适的课程还是比较容易的。
课程介绍下面从我了解的课程的各个方面给大家介绍,以供参考。
18600 Foundations of Computer Systems
简介:算是转码系统方向的必修课,和计算机系统入门课15213/15513类似,整门课学完后对计算机体系能有一个基本的全面认识,有助于为后续课程打好基础。
课程内容:计算机体系基础概念:0/1bit操作→进程→cache→并发→虚拟内存→proxy等。
授课方式:传统授课模式加相关lab练习,有配套课程CSAPP;ps:如果觉得老师授课比较单调不太喜欢,可以自己参考513的课程和网课。
作业考试:作业包含7-8个内容比较丰富的lab,要求用C语言在Andrew Unix machine环境下实现,而且coding style最后也会计算进分数。同时会提供start code和清楚的handout以及比较宽裕的时间,所以总体来说不是很难。关于考试,包含期中期末两次,特点是题量大且出题灵活,相对难度大一些。
关于课程和lab更多信息还可以去官网查看:http://csapp.cs.cmu.edu/3e/labs.html。
17637 Web Application Development
简介:学校为数不多关于Web知识的课程,因为课程相对好理解且易上手,推荐跨专业转码新手选择。
课程内容:授课内容比较基础,知识面广,对网络的各个方面基本都有涉及。
授课方式:讲课风格和授课老师有关,有传统的授课模式也有,授课与实践相结合的方式也有,各有利弊,可以提前邮件咨询自己的代课老师。
作业考试:作业的话分为前后两部分,前半学期是基于模板实现一个小型的网站,这个网站不是一次成型,而是通过平时若干作业不断添加功能开发,最后所有作业会提交到GitHub的课程repo里。后半学期的作业会加大难度,通过2-4人组队来完成较之前稍大型的网站,类似online game、piazza那样,过程和前半学期差不多。考试最少会有期末的那次,考试内容一般是选择填空简答题,其中难度比较大的是手写Django app。
15640 Distributed Systems
简介:名气比较大的系统课之一,授课老师都比较牛,能学到很多有用的知识。
课程内容:春季授课内容偏底层基础,有RPC、caching、distributed file system、scaling、failure recovery等,秋季授课内容偏应用,加强了分布式系统的一致性内容。不过选此课的要求比较高(600/513至少是B),且最后给的分数历来不会很高,想要刷GPA的同学需要考虑一下。
授课方式:project都使用autolab提交,有coding style分,课程整体内容多压力较大,比较充实。
作业考试:整个学期总共有4个homework,题型和考试差不多,分为简答题和计算题。考试分为两个,期中和期末,特点是难度不大体量很大且考察的知识点细节很多,比较难拿到高分。
15719/18709 Advanced Cloud Computing
简介:高阶系统方面的优秀课程之一,由行业大拿Greg Ganger和George Amvrosiadis开设, 课程中还有机会听行业大佬的演讲,了解工业前沿进展。
课程内容:课程包含了cloud computing领域中的经点概念以及相应的系统实例,从多角度让你深刻理解cloud computing。
授课方式:首先ACC课程春季开课,暂时没有秋季班,选课的时候推荐同时选DS,两个课程在内容上可以互补,效果会更好。授课方式上主要是传统的授课模式,课前也会布置一些相关论文或文献帮助同学加深理解。两个老师讲课各有特点,Greg讲课风格比较幽默,内容深入浅出很好接受;George讲课风格较Greg严肃一些,比较重视互动。
作业考试:课程project是使用 Python和Go等语言,在AWS完成的。一共要完成三个,分别是基于spark的大数据ETL、模拟Kubernetes scheduling以及scaling policy设计,总体来说代码量不是很大,不过相关记录和细节比较繁琐,除新手比较难掌握外,load适中。关于考试,也是期中期末两期,题目设置灵活,多为简答题,需要运用课程上教授的内容来论证自己的观点。
17514 Principles of Software System Construction
简介:由ISR开设,类似软件工程的基础经典课程,非常实用,有助于面试,适合想了解JAVA的转码新手。
课程内容:偏向软件设计基础内容,涉及方向从class level一直到system level都有,其他的软件相关概念如测试、防火墙等也都包含在内。
作业考试: 作业的完成基于Java,提交方式大部分基于GitHub和Travis CI。数量上总共有6个,除了第五个需要团队协作外都是个人完成。难度的话,除了第四个Carcassonne代码量极大相对复杂外,整体难度还可以。考试的话有期中期末两个,平时认真学习的话,没有什么难度,不需要担心。
15651 Algorithm Design and Analysis
简介:重要的算法课程,授课老师为行业先驱,有深度,难度大,建议有基础的人选择。
课程内容:课程内容涵盖面很广, DP、DFS、max flow、hashing以及一些课本以外老师自己的理解都会加入到课程内。
授课方式:之前的两位老师Gary Miller和Danny Sleator都是行业的领军人物,授课各有风格,不过讲课速度偏快,知识量比较密集。
作业考试:作业总得来说,从难度和量来说都比较大,总共7个作业加一周一测试,形式基本是3道算法加一道编程,都和平时上课学的知识有关联,不过难度都比较高,所以一般是3人组队完成而不是单人完成。考试包含期中期末两个,难度同样比较大,给分也很严格,最后基本只有五分之一能拿到A,剩下一半B一半C。
15746/18746 Storage Systems
简介:以存储系统为核心的系统课,授课老师硬核,内容详实有深度。
课程内容:包含存储系统的各个方面,有概念讲解,FFS/LFS等经典文件系统的实现细节以及一些实例和具体应用,关于存储系统的各个方面基本都涉及到了。
授课方式:秋季开课,与15719/18709课程开设老师一样:Greg Ganger和George Amvrosiadis,授课由这两位老师共同完成,后期还会邀请一些大拿做讲座。
作业考试:project总共有两个,一个简单一个较难,都是基于AWS用C/C++完成,前半学期完成第一个模拟实现SSD中的flash translation layer(FTL),相对简单;后半学期基于FUSE实现一个hybrid file system,功能比较复杂,代码量也大。考试依然是一个期中一个期末,考察方式比较灵活,虽然是对平时授课中各种概念的考察,但是要理解的更深度透彻一些。
其他推荐除此之外,还有一些我觉得还不错在这里推荐的课程,
像适合小白的17681 Java for Application Programmers/17683 Data Structures for Application Programmers两门mini课,压力较大但会收获颇丰的经典系统课15618 Parallel Computer Architecture and Programming,
想要了解数据库且写过C类语言的童鞋可以选择15645 Database Systems(选不上的话也可以找找在线课),高质量的网络课15641 Computer Networks,651的进阶算法课15750 Graduate Algorithms,以及计算机图形入门课15662 Computer Graphics等等。
ML课里最推荐的是帮你巩固理论基础的18661课程,
System方向的话,强推15513 Intro to Computer Systems,
还有进阶系统课18709/15719 Advanced Cloud Computing, 18746/15746 Storage Systems等都可以考虑。
当然还有一些水课,例如24780 Engineering Computation、18749 Building Reliable Distributed Systems、18794 Pattern Recognition Theory等,选之前最好慎重考察一下。
最后,每个人对于课程的感受可能会有所不同,选择的时候也不一定非要听别人的,可以作为参考。
申请要求CMU ECE Master对申请者的背景要求不是很高,不过从入学后的学业压力考虑,建议有计算机背景的非文科生申请。
成绩方面,学校要求学生提供GPA、 GRE和语言成绩,结合以前录取情况,最低要求为GPA3.5+,GRE320+,TOEFL105+,且语言成绩对于小分也有要求:
IELTS:总分≥7;R≥6.5;L≥6.5;S≥6;W≥6; TOEFL:总分≥84分;R≥22;L≥22;S≥18;W≥22。
更多详细信息大家可以访问官网网址:https://www.ece.cmu.edu
大体来说,在CMU找实习机会并不是很难,一方面学校会提供很多就业支持,帮忙改简历,组织招聘会之类的,学校还会不定期组织Google, Nvidia, Facebook等大公司的tour和校友见面会,加上地理位置比较优越(有校区在硅谷),接触资源比较方便,加上学校本身的名气,同学大多都能找到满意的实习机会。
不过这并不意味着就可以坐享其成,因为毕竟学校的影响是有限的,自己也需要提前一个季度联系实习机会,多联系学长学姐等校友资源,积极争取内推的资格,多听听他们的面试、工作项目经验,多参加招聘会。此外,为了后面能腾出时间做实习准备,在课程选择上,也就不要把压力大的课程放在最后一学期了。
有了前期实习的基础,就业也就不那么困难了。ECE就业率还是很客观的,特别是位于硅谷校区这边,就业率达到百分之八九十还是有很大可能的。即使最后选择回国就业,收入也是相对比较高的。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。