打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CMU超强介绍(ME + 转CS + CMU各主要项目)+留学感悟 (二)

3、CMU其它项目介绍。


拿到CMU ECE,INI,EBIZ,MISM,VLIS等项目纠结的同学看过来。

LZ之所以比较了解这项目,一是因为在CMU待的也有一段时间了,而是LZ是坚定的转CS者,一直在考虑也拿一个CS相关的degree,所以CMU的CS类的项目都考察过。


先发发闹骚。

去年刚开学ME就有三个同学申请了14 SPRING的 ECE,最后全部录了,包括有截止日期后才提交的。这学期包括LZ在内有更多的ME的同学申请FALL的ECE,我们几个都没有任何消息。看着ECE半天不出,LZ在INI截止最后一天申了个INI,材料都是改了改项目名就交了,推荐信和G,T都是一周之后才到。前几天INI报了一些,邮箱也是静悄悄,不知道INI是不是有第二轮,这也是LZ最近比较烦心的原因。虽然以前学长的经验看就拿着ME的学位找CS工作一样可以拿好的OFFER,但总觉得有一个CS的degree会好一些。

VLIS: 基本上是 CS 院下所有professional 项目里最好的了吧,性价比很高,就业很给力,课程非常硬。 如果没有UCLA,UIUC等及以上的纯CS MS的AD,目标是就业不是PHD的话,我觉得来VLIS不用犹豫。


ECE: 从往年来看,ECE 秋季和春季录取难度差别很大。 今年地里拿到ECE FALL PITT校区录取的也没几个,基本背景都很好,很多同学都拿到了推迟到SPRING的录取,正是说明了ECE spring的生源不是特别的好,才会给每个人延期都spring的选项。ME春季申请转ECE全录,秋季都没消息,可能也是这个原因。

我觉得对于本科EE,想转CS的同学,CMU ECE是个很好的选择, CMU往年的就业数据也很好。

拿到延期spring的同学,spring入学跟秋季入学从学习上来说并没有太大的区别,唯一的劣势就是得在家待半年和暑假没有实习。ECE CS向的课很多,不用太担心课程的问题。


INI: INI往年的就业比ECE还略好一点,NI几个项目中,尤其MSIN的课程非常硬,扛下来以后,实力都会有很大的提升,所以最后的就业自然就好。INI的degree requirement学分要求比较多,一年半毕业的话会有点累。


MSIT-SE,ESE:

这几个项目LZ真心不是特别了解,也基本不认识这几个项目的人,在CMU属于有点小众的项目吧。选课好像不是特别自由,主要是17XXX software engineering的课,这些课其它专业的基本都没什么人选,上课也在离CAMPUS一定距离的craig street上面。就业情况不是太清楚,不过个人觉得CMU + software engineering的头衔,自己刷好题,上好课,找工作应该不是问题。如果没有其它更好的选择的话,这几个项目还可以的。


EBIZ: EBIZ在CMU内部的口碑并不是特别的好,LZ来CMU之前并不是太了解,来了之后听过一下其他系的人说EBIZ比较水。EBIZ的缺点是选课很不自由,第一学期只有一门课,定死了是08600 JAVA,这门课LZ也上过,比较一般吧。第二学期可以选一门半。其它的都是他们本系的project。优点是EBIZ的就业情况还是不错的,GPA刷高去oracle希望很大。所以自身实力不错,想把EBIZ作为一个跳板在美国找工作的话,我觉的还是不错,一年的时间花费也不算特别高。如果本身实力不够,想好好修炼一番,选择其他项目可能会好一点


MISM:对于MIS类的同学来说,MISM是很多人的dream。不过来MISM的话最好做好做技术的准备。可能会跟之前的想象有一点差别。例如 IT CONSULTING什么之类的,去的好像比较少,大部分还是需要码代码的工作。有些同学在EBIZ和MISM中间做选择,个人觉得MISM好一些,当然也看自身需求吧。


4、
CMU部分课程介绍

(1)15213 - Introduction to Computer System
这门课LZ是这学期上的,著名的CMU神课。其实213叫神课并不是因为特别难,而是因为这门课开了很多年,反响一直都比较好。真正论难度的话必不会是那种让你很痛苦的课,跟OS什么的不是一个档次。不会让你每天菊花盛开。
这门课上了一半,前半学期讲的内容有:整数,浮点数的表示方法。程序的机器级表示,寄存器,汇编等,比如if, loop, switch等如何实现。程序的stack-frame结构,递归如何实现等。Buffer Overflow的攻击原理等等。然后讲了memory-hierarchy, 着重是cache,然后是linking. Exceptional control flow讲了一半,之后还有virtual memory和 network,concurrency programming.
这门课比较出名的是他的作业,一共有七次LAB:
第一个data,让你只使用位操作实现各种功能,比较有趣也比较烦,你还可以不断减少你用的operator数在排行榜上领先(我是没那个功夫,GEEK们实在太猛了,无法超越)。第二个BOMB,就是读汇编,看懂是在干什么,给出正确的输入。 第三个,BUFFER,让你用BUFFER OVERFLOW的原理去攻击操作程序,植入代码等等,加深对汇编以及BUFFER的理解。 第四个,cache,写一个cache simulator,然后优化一个矩阵转制函数,要求使得cache miss数最少。(LZ真是他妈的想了好久才达到满分)。

前半学期的LAB还算比较好,可以算“有趣”吧。但是有一些有点像智力题的感觉,对找工作来说可能直接帮助不是特别大。据说后半学期的LAB就比较虐了。
5.Shell LAB, 写一个简单的UNIX SHELL, LZ才刚刚开始看,感觉很烦。
6. Malloc LAB,传言中最难LAB,自己写一个malloc,calloc函数等,有性能要求,据说相当的恶心。
7. proxy LAB, 网络编程+concurrency,要支持HTTP GET功能,据说也很恶心的。

213从去年秋季考试改成网考了,难度降低很多,其实LZ之前刷往年题的时候感觉213的考试其实就还好,至少期中我感觉不难,现在改成网考之后时间又多给,拿A其实真的不难了。 对于找工作来说,213的直接作用可能不是那么大,这门课不是让你学编程的,但是这门课是后续一些有用的系统课程,computer networks, OS, DS等的先行课,所以还是早点上掉比较好。

秋季学期讲课的是这本书的作者,春季学期有CMU 大帅哥 Anthony Rowe,色女们自行google吧。LZ有自己偷拍的照片。。


(2) 08722 – Data Structurefor application programmers

这门课主要是开给EBIZ和MISM的,在MISM那边的课号是95772. 但是很多ECE, INI的同学,以及咱ME转CS帮都在上这门课。这门课只有半学期,一共6个credits,相当于1.5学分。内容非常基础,但是我觉得帮助挺大的,对于非CS科班出身想转CS的同学非常建议上一下, 基础越弱收获越大,要是基础比较硬的话就不用上了。LZ上的其它CS的课几乎都是各种牛校的PHD出身,这门课的老师好像都没有PHD学位,肯定没法去上15的课,但是讲课挺用心,讲的也很清楚。讲课这东西真的不是老师自己越牛就讲的越好。尤其数据结构这种比较基础的内容。这门课从最简单的内容讲起,包括array, arraylist, linked list, stack, queue,sorting(bubble, selection, insertion, merge, quick, heap), hashTable, hashMap,hashSet, BST, TreeMap, TreeSet, Huffman coding, Heap. 每周一次quiz, lab, homework。讲的时候内容都围绕Java Collection 来讲,还涉及与collection有关的comparator, iterator 等内容。这门课完全就是针对面试的,作业要求先手写代码(虽然大部分时候都是先ECLIPSE敲好再抄到纸上的)。

6次homework,前面的非常简单,后面稍微麻烦一点,难度都不大,就是让你去熟悉这些数据结构能自己implement,也能用JAVA COLLECTION。

1.自己implement 一个 arraylist 实现各种要求 2. Queue, stack 的implement和应用 3.写一个sorted linkedlist, 要求全部用recursion,不能有任何循环。 4. 自己设计implement一个 hashTable 5. Java HashMap的运用 6. Implement 一个binary search tree. 各种操作,以及运用。 包括traverse等,要求traverse必须iteratively 。

作业扣分比较狠,给的test只包括了常规的CASE,要求你自己去想CORNER CASE,因为面试的时候也没人会跟你说要考虑哪些corner case。

6次quiz,时间有一点紧,有些代码填空题,并不是特别容易拿高分,比如第一次quiz最后考了一个在unsorted的数列里面利用binary search找local minimum的变种,在不到20分钟时间做完前面的题之后,要是之前没见过也没那么快就想的出来。其他题目包括reverse a linked list, reverse a linked listrecursively, 写 iteratively 的 merge sort 等等。

期末考试时间比较紧,题目有O(N)的recursive的Fibonnaci, 用两个长短数组实现没有latency的arraylist,写Huffman coding, rotate过的数组里面的binary search等。不算特别难,但是时间太紧,大家分都不高。


个人感觉这门课上下来帮助挺大的,比如LZ以前对hashtable之类的说起来也都知道,但是具体的implementation没有搞清楚,hashFunction怎么选。Collision 怎么处理,open addressing,还是linked list。上完之后要清楚不少。 还有像BST这种,说起来谁都会,但是让你写一个BST的class,实现 insert, delete, search等。你能写出bug free的么,我觉得大部分非科班出身的都困难,光一个delete估计就很难保证。甚至让你立马写一个bug free的 merge sort, quick sort可能都不一定。所以上一上这门课感觉还是挺有帮助的。


这门课LZ最后几次简单的QUIZ犯了傻逼,最后拿了A-,成了成绩单上的污点啊…,undefined


(3)02713- Algorithms & Data StructureFor Scientists

这门课的老师是以前在U MARYLAND 教算法的,前两年来了CMU的Computational Biology 系,CMU的算法早有牛人一直在上了就在computational biology系下开了这门算法课。选这门课也是实属无奈,说实话对于CMU转CS找工作的同学来说,CMU目前还真没有一门特别适合的算法数据结构的课。15451 Algorithm design & analysis 不讲数据结构不编程,都是各种证明,各种数学,而且难度很大,远大于面试可能考到的难度。15210 倒是数据结构+算法,而且有编程,但是使用的语言是 CMU 自制的函数式编程语言SML,另外并行的算法讲的比较多。这门课WORKLOAD也比较重,再加上你需要自学SML,并行的算法目前来看考察的也不是特别的多,LZ权衡之后没有选这门课。。

上了这门02713以后发现其风格跟15651基本一致,大量的证明与数学。编程作业一共两次,用PYTHON写。

内容包括

1、“简单”图论算法: minimum spanning tree(prim’s, kruskal’s etc.) BSFS,DFS , Dijkstra , A*, Bellman Ford, Topological sorting.

2、 Divide & Conquer: closest pair of points,inversion count..

3、splay tree 4、Dynamic Programming 5、Network Flow 6、Linear & Integer Programming 7、 NPC problem


作业和考试都是围绕这些内容的算法设计和证明,比如让你证明如果一个图里有多个minimum spanning tree的话,那么他们的边的权重的序列一定相同。讲课的时候也是会花很多的时间来证明为什么splay tree是amortized O(log n). 之类的问题。总之比较数学。

编程作业刚布置了第一次,以 Minimum Spanning Tree 做 heuristic 用 A* 的思路做 TSP 的算法,看了一下感觉还是要花一些时间的,特别是LZ这种之前不会PYTHON的人。

另外虽然名字里有data structure 但其实基本没有讲,除了splay tree 以外,就讲MST 的时候讲了一点heap和union find data structure.

这门课对找工作的直接帮助可能也不是特别大,据说面试的时候图论的算法基本也就是个 BFS,DFS . Dijkstra 都不太可能有, 更别说什么 Bellman Ford, A*了。但是上上这门课对一些算法思想的认识上还是有提升的,再加上现在美国这边的算法普遍就是这个风格。在CMU没有其它更合适的算法课的情况下选这门02713还是可以的。另外MISM有一门自己的算法课95771据说不错,难度适中也有编程,但MISM的课外系一般选不上,不过有一名ME的同学发邮件给老师哭诉然后就选上了….以后的同学可以借鉴一下…


(4) 15214 – Principle of Software Construction – Object,Design & concurrency

说点题外话 c++已经在CMU失宠很多年了,除了computer graphics以外,好像CS系的课没有用C++的了。不过其实JAVA也早就失宠了,这门15214就是为数不多的还在用java的课。CMU已经把面向对象的概念从CS学生的必须内容中除去了。现在CMU流行的就是函数式编程,成为了必修,以及各种系统级编程,并行等等。C是CMU永恒的宠儿。

选这门课的原因是因为觉得design patterns 很重要。

这门课的内容包括主要三个部分,第一部分是面向对象的一些概念,inheritance, polymorphism 等等。第二部分是 design,第三部分是并行系统。

CMU的特点是本科生的课不断在变,这门15214开设时间并不长,课程质量跟开了十几年的213确实有差距。作业还算比较有趣,量适中,比213要稍微轻松一点。

以这次的作业为例,要求完成一个scrabble game,包括三个部分,第一部分要求做面向对象的分析与设计,用UML 画domain model, object model , interaction diagram等等。 第二部分Implementation和第三部分的GUI。 要求在设计和实现中考虑和运用design patterns。

这门课有两个老师,到目前为止部分的课是一个德国人老师讲的,他讲课基本上来说就是nightmare级,组织混乱,表达不清。这门课的PPT做的也很烂,上课基本听不进去。导致LZ在第一次期中之后,感觉除了作业以外,好多东西都没学清楚,只能找时间看书了。目前考过一次期中,个人感觉题目比较简单,考完结果也还不错,不过貌似大部分同学分都不高,不知道是不是这货讲课的结果。


(5) 08600-JAVA & J2EE PROGRAMMING


上这门课之前对这门课期望很高,因为名字很酷炫,JAVA+J2EE。上了之后其实有点失望。这门课最早的课号是15600,后来改成08600了,可能因为难度确实跟15 研究生级别的课不相称。完全从入门开始讲JAVA,前几次作业弱智级。中间稍微麻烦一点的作业就给了两周的时间。后几次作业涉及到网页,J2EE开发的东西。最后两次作业稍微麻烦一点,不过也完全搞的出来。期中期末考试都比较简单,拿A很容易。

这门课在CMU CS院研究生级别的课程里面确实算比较水的了吧。不过对于底子薄转专业的同学来说上这门课来学学JAVA,增加一点代码量,熟练度还是不错的,建议第一学期选。


(6) 24787 – Artificial Intelligence & Machine Learningfor Engineering Design

ME系的machine learning课。这门课其实还不错,老师讲的挺好的,课程压力不是特别大,也比较容易拿A。TOPIC 包括常规的decision tree, pattern recognition (主要是bayesian), neural networks, clustering, PCA,SVM, genetic algorithms, 和一些优化算法。作业刚开始做还有一点难度,如果编程基础差的话。比如第一次完整写一个decision tree,刚入学的时候做还是有点蛋疼。第二次作业的狄利克雷分布也有一点难,最后只能靠助教给的公式了。。不过作业的难度后面反而降低了。上这门课作为对machine learning的一点初步的认识的话还是不错的。有同学把这门课和machine learning 系的10601 machine learning都上了,说前半学期这门课作业难度还大一点,不过后半学期就不如601了。建议秋季上,老师讲的挺好的,不过春季学期他把他的PHD扔去讲课了.. ,就呵呵了。


(7) Engineering Computation

这门课的名字跟内容其实不太相关。这门课是ME系内的编程课,主要内容是C++和OpenGL.。这门课之前就有学长介绍,每年很多人都会选,尤其是想转CS的。LZ来之前对这门课期望比较高,因为各种描述都建议选。刚开始上的时候也觉得特别好。不过现在自身水平提升了一点以后再来看这门课觉得有一点水。老师过于NICE,极容易拿A,QUIZ考不好有work shop加分。这门课的老师其实挺牛的,但是他就是太过于NICE,不想太PUSH。OpenGL讲的深度不够,很多东西也都是他提供的现成的framework。 C++部分其实很多东西都讲到了,如copy constructor, destructor, 各种const, operator overloading, template,virtual function等等。但是很多内容练习的不够,所以没有真正的掌握,另外老师说 Many people prefer C standard library overC++ standard library including me。然后我们就完全没有用 STL,一学期都是用各种C 的library. 另外ME的编程课对编程规范要求很低,各种poor style 如magic number, no comment, long function都出现在我给这门课写的code中,成员变量也是大量public。现在上的CS的课对这些方面的要求就很严了,严厉禁止各种poor style。当然批评了这门课的一些缺点,不得不说这门课在我刚到CMU作为一门编程小白时,确实给了很大的帮助,代码熟练度,基本的概念等都是来自这门课。对于CMU ME想转CS的同学,尤其是想把ME学位先拿到的话,这门课还是秋季入学必选的。


另外LZ听说的一些好课有

ECE: HOW TO WRITE FAST CODE, Real Time Embedded System

CS: 15112 绝对入门级神课,15122 CMU本科生必须,但是课讲的好想不是太好。 154XX的 Database, Distributed System, Computer Networks, OS, Complier Design 都是好课,不过都比较累,尤其OS虐心级。 15319/619 Cloud Computing 据说要水一点,开设时间也不长,但是内容好像挺好的。 15437 web application 做网页,对前端感兴趣的可以上一上。


5、CMU 非CS项目


CEE:怎门说呢,CMU CEE系环境加土木两个方向一年MS有一百多号人。招人数量这么多,录取当然是不可能太严。985学校只要GPA GT都还能看就很有戏,非211 GPA GT有些亮点也行。至于就业的话,美帝CIVIL 和环境的就业情况不容乐观,比ME还要难。所以现在CEE想转CS的人也开始多了起来,虽然还不如ME这么猖獗,但是也已经有自己的小团体了。我觉得在CEE自身实力够强的话,也一样能找到工作。


Chem E: CMU的化工我认识的人很少,只知道去年也有一个哥们转到ECE去了。化工的录取难度不太了。就业的话CHEM E在美帝一样严峻,其它的不是特别了解了。转CS的好像也有一些,不过也应该没ME这么多。


MSE, BME:

这两个是真心不太了解了,没什么认识的人,地里也没见过介绍这两个项目的。估计转CS的应该不多吧,因为我没见过。就业什么的从专业来看应该也是比较严峻,需要自己的优秀很坚持不懈找到好工作的类型。


6LZ的留学感悟

终于到了最后的部分,也是LZ自己比较想说的话。

在前面接近一万字的描述中,我几乎在说在CMU如何学习,如何找工作。


在美国找一份收入丰厚的工作,是大部分留学美国读MS的同学们的目标吧。目前来看,在美帝找一份码农的工作,确实是像LZ这样的工薪家庭子弟最容易的获得经济与物质上飞跃的途径。像我这样家庭出身的孩子,如果能拿到诸如AMAZON,ORACLE甚至GOOGLE TWITTER 这样的offer,在二十岁出头的年纪就将拥有一份收入比父母加起来还多的工作,拥有一份可能十倍于你大部分发小,同学的工作。这确实会让人觉得兴奋,觉得满足。

但是此时此刻我也在思考,我们想要的,追求的到底是什么。我想在大家二十年的人生中,过往的经历已经告诉了我们,物质条件的满足并不能给你带来持久的幸福感。或许很多人也和我一样,我们想要一份收入丰厚的工作向父母证明自己的能力,向亲人证明我们的成功。但是你有没有想过这些带给你的可能都只是一时的快乐与幸福。你有没有想过,对你的父母来说,比起在大洋彼岸听到你拿到年薪10W+美元的OFFER的消息,他们更希望有时间和你在一起聊天,吃饭,旅行。LZ不是一个强者,我时刻都在想着,我年过七旬的爷爷奶奶,或许我只有几年的时间可能可以再陪伴他们了,如果以后的每一年我都在美国,当你在大洋彼岸听到他们离去的消息,会不会心中有无限的感伤。我想说这些并不是想动摇大家的意志,只是希望大家在上这条路之前,也能思考一下,你现在所追求和梦想的是不是你真的想要的。


你有没有想过,如果不能找到一份自己喜欢的事业,纵使拥有你曾经渴望的车、房,也很难每天都有奋斗的心情。其实LZ真正羡慕的,是我曾经参加大学生方程式比赛时认识的几个人,他们知道自己最爱的就是赛车,就义无反顾的去做自己喜欢的事业。不感兴趣的可以一点不学,挂科,留级,做赛车时却百倍努力。毕业之后就去做了见习赛车工程师。LZ也是因为没有找到自己最热爱的可以去追寻的事业,所以只能选择先去追求物质条件上的自由。之所以说这些,是想告诉大家,追求物质条件上的满足是为了更加的自由而不是更加的不自由。一份薪水丰厚的OFFER是为了让你在能养活自己,回报父母以后有自由去思考找寻你真正有兴趣的事业,或者为你想追求的事业提供经济上的支持。而如果你最终被这份OFFER束缚住,想得到又怕失去,那么你真的应该考虑一下现在所拥有的是不是曾经所追求的。所以在你决定转或者不转CS的时候,都想一想你是否有兴趣,如果你从来就不喜欢编程,只是为了工作走上这条路的话,我想就算拿到你的DREAM OFFER,也不可能获得真正的幸福感。


最后,想告诉大家,不要鼠目寸光。刚才已经说过,在二十岁出头的年纪就将拥有一份收入比父母加起来还多的工作,拥有一份可能十倍于你大部分发小,同学的工作。这确实会让人觉得兴奋。但是你一定不要就此满足。人生的乐趣在于不断的有新的机遇和挑战。你永远不知道你能做到什么。喜欢管理,可以走上管理层。喜欢创业,你可以辞职办自己的公司。我的同学说他要来着当码农挣的钱回国拍电影,你也可以。如果你喜欢政治,你可能可以加入美国籍,做一名议员甚至。 It may seem ridiculous,but you never know.

很多人在美国拿着丰厚的年薪最后回国,接手一份工资不到此前一半的工作,为什么呢。当你现在就能看到你之后三十年的样子的时候,是时候寻求改变了。


说了这么多,可能很多都只是自己想太多,这一部分不是经验,只能说是LZ自己的意淫吧,希望,对大家有所启发。。


终于写完了这篇该死的日志,也该接着写该死的代码了,这次花的时间是真有点多了,不加个几百分说的过去么?


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
学长分享丨CS跨申, CMU、USC、洛桑联邦理工,攻略分享
【荐课】2018年不容错过的15 1门免费机器学习课程(最早明天开始注册)
关于CS(计算机科学)、EE(电气工程)、MIS(管理信息系统)的讨论
男士春秋拼色衬衫 LZ142CS002
卡内基梅隆大学计算机专业研究生项目总览
卡内基梅隆大学澳大利亚校区介绍|一亩三分地研究生申请版
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服