2012美国留学热门专业解析:计算机专业_申请条件-查字典留学网
 
请输入您要查询的关键词
您现在的位置: 留学网首页 >> 申请条件 >> 2012美国留学热门专业解析:计算机专业

2012美国留学热门专业解析:计算机专业

发布时间:2011-09-16来源:查字典留学网

2012美国留学热门专业解析:计算机专业

一、研究方向:

美国大学计算机专业硕士研究16大方向

美国计算机专业研究方向通常锁定在哪些地方呢?本文旨在给您介绍一下美国计算机专业的16个研究方向,方便您在选择专业的时候更有的放矢!

2012美国留学热门专业解析:计算机专业

二、申请条件

对于美国的任何专业,每个学校都有不同的偏好,有些学校看重GPA,有些学校看重GRE,有的学校只看研究经历是否match。计算机科学专业同样如此,解决这个问题,最好的方法就是对症下药,去美国学校的官网上研究一下此专业的申请内容,这时往往可以看出该专业在此学校的偏重方向,甚至教授的喜好,这是选校时的最重要策略之一。

本文选择五所中国学生录取率高的学校做一计算机科学专业的申请条件分析,者无所学校分别是,Rensselaer Polytechnic Institute,University of Central Florida,University of Delaware,University of Utah和Virginia Tech.其中RPI,Utah U和Virginia Tech的专业排名在TOP50以内,而其余两间也在TOP100以内。

G/T成绩

五所学校对于GRE和TOEFL的要求都差不多,GRE的verbal and quantitative的最低分数要求都在1200左右,而TOEFL的最低要求是computer-based test 220左右,paper-based test550左右,而internet-based test 80分左右。

但总的来说,RPI对GT的成绩要求高点儿,学校要求学生递交TOEFL或雅思的成绩。另外UD对于普通的申请人和要申请TA奖学金的学生的GT成绩要求是不一样的,对于申请TA的学生学校要求至少是600 (paper-based test), 250 (computer-based test), or 100 (TOEFL iBT)。对于TOEFL,一般来说总分超过600比较保险。但是虽然很多学校对于prospective students的英语水平肯定是有一定的要求,但是这个度量标准有可能非常灵活,例如UD和U of Utah这两间学校就明确说明了一下一点:符合GT成绩最低录取要求的学生不一定会被录取,然而达不到这些最低要求的学生也有可能被录取只要申请人可以提供其他证明自己较强的学术能力的材料。因此GT成绩如果考得不好其实是可以通过其他方面来弥补的。一个教授的话总结的很好:If your score is bad, it is enough to kick you out; if your score is good, it is not enough to get you in.

至于Sub,除了UCF要求之外,其余四间学校都是没有要求的。其实Sub是针对一些本科或者是硕士阶段非CS的申请人的,但如果你是出身于名校的CS专业,GPA又挺高的,就没有必要考Sub了。

GPA

UCF的GPA要求是3.25以上,RPI是3.3以上,UD是3.2以上,UU是3.3,Virginia是3.2以上。所以这五所学校的GPA要求是差不多的。这五所学校虽然都没有规定比较高的GPA要求,但是GPA当然是越高越好,当然学校的好坏也不同程度影响着GPA的效力,同样你在班级里面的排名也非常的重要。

所以UD在要求申请人递交成绩单的同时,也要求申请人要说明自己在班级里的排名。表面上看,GPA好像跟GT成绩一样,也只是个门神。但事实上,如果你只是一个本科生,如果你没有其他方面的证据证明你的学习能力,GPA是人家唯一可以参照的标准。它比Sub更有说服力,因为毕竟是四年持续的表现,而不是几个月的突击就能解决的。但是要注意,美国人可能更注重实效,所以他们所关心的GPA仅仅牵扯你的专业课以及专业相关课程。学校申请网页上一般会问你的Total GPA和Major GPA,例如UD,这时Major GPA计算的时候可以有弹性一些,那些专业相关课程,如果你分数很高,可以算上,如果比较扯后腿,那就算了。

文书(Resume +PS +RL)

这五所学校对于文书的要求有相同的地方也有不同的地方。简历、个人陈述和3封推荐信都是这五间学校要求申请人递交的。但这五间学校对于这些文书的侧重点又是不一样的,例如UCF对Resume要求严格一点,UCF的评审委员会通常的做法应该是先看Resume,有什么感兴趣的地方,才可能翻读你的PS。所以如果你要申请UCF的CS专业你就要在你的Resume上面下功夫了,尽量让你的Resume秀出你的两点。而UD则比较注重论文的写作,学校有三条常规性的论文题目,分别是1)你的职业目标是什么?与此相关的学习计划是怎样的?-类似于PS。2)在你的专业研究领域,你对哪一个细分方向比较感兴趣?简单解释一下。3)你在你的专业研究领域有什么特别出色的地方?你有被人怀疑犯罪的经历吗?如果答案是是,请进一步描述一下当时的情形以及你从这一事件中学到了什么东西。然后学校再根据你的背景还有你所感兴趣的研究方向来定你其他的论文题目。而U of Utah则比较注重PS的写作,学校已经提示了申请人可以从个人突出的特点,兴趣,做过的项目,曾写过的论文等等。至于推荐信,五所学校均要求3封,而且学校都明确地说明了这3封最好是出自申请人大学时或读硕士时的教授或导师之手。

专业背景

虽然这五所学校都没有明确规定申请人一定要有相同的专业背景,但是一些科目的学习背景申请人还是必须要有的,例如UCF要求申请人要有计算机结构,编程语言,操作系统和离散数学的背景;UD是要求申请人要有微积分,离散数学,概率统计,数学逻辑,计算原理,数据语言编程,数据结构,计算机结构,操作系统,以及运算法则分析等的背景。

所以申请人在选择学校的时候要遵守一个非常重要的原则,那就是Match原则。学校要的并不是最Top的,而是要最Match的,所以不要以为你的背景有多么的厉害人家就一定会录取你。如果你没有相关的背景,但是你又很想申请CS的专业的话,你可以买一些专业书回来看,这样可以提高你对这个专业的理解,也就是我们平时所说的专业提升。

2012美国留学热门专业解析:计算机专业

三、就业分析:

文章写给作为fresh graduate毕业后希望留在美国工业界工作的同学,适合大部分人的情况。当然,以下四种情况不再本文所涉及范畴之列:

1 如果你立志博士毕业后要去当老师,这篇文章不是给你看的;

2 如果你志存高远,计划着将来成为科技行业的明星/老总,也请饶开,我不会养牛,不过我知道很多牛人,也经历过找第一份工作的过程;

3 这篇文章也当然不是写给有工作经验的老手或者技术大牛看的;

4 IBM/Microsoft这样的大公司也招优秀博士生做research staff,提高公司的科研质量,也不包括在内。

换句话说,这个文章是芸芸众生帖,是新手上路帖,不是精英牛人老鸟贴。

先说一下学cs的去公司到底做什么工作。

一、developer/programmer/software engineer

不管你是硕士,还是博士,不管你是学CS哪个方向的,研究算法(algorithm)的也好,捣鼓人工智能(AI)的也罢,或者是啥软件工程(software engineering)、图形处理(graphics/image processing)、网络(network) etc etc etc,大家将来都有一条共同的也是CS里最大的出路,就是去写code编程做软件开发。

很多人申请的时候,或者在学校读书学习期间,很在意各个方向的区别,痴迷于某个领域,但是工作几年回过头来一看,没啥区别,大家都有一个光荣的头衔,好听点叫软件工程师,难听点叫程序员,职称(title)和工资高点低点而已。区别无非是有的人通过学校期间的学习或者研究,具有domain knowledge(比如说常见的image processing算法,数据库知识,各种网络协议和分布式系统知识),然后去开发各种相应的domain-specific application(比如图形图像处理软件,数据库管理软件,网络设备/分布式系统上运行的软件)。等你每天写了无数programs之后,可能对领域上的区别早就麻木了;等你工作多年,做了无数个project以后,可能早就不care到底算是那个domain/area的了,来了通杀。

不管你是在哪个行业工作,IT也好,金融保险也罢,或者是啥咨询、生物技术、whatever,不管你的工作头衔(job title)听上去很好听还是很丢人(比如architect/Principle/Technical Lead vs programmer),也不管你的工资是1万一个月还是5000一个月,最关键的是你的工作性质是什么,只要是以软件开发/编程为主,那么你就是此类的。

这么一说,可能大家就明白了,原来学CS的,不论你是什么方向,殊途同归啊,那我还计较个啥?区别还是有的,比如说现在cloud computing比较hot,不少公司在做相关的东西,如果你在学校里是研究这类技术的,公司可能会因为你的domain knowledge招你而不是一个研究图形学的,但是你将来的工作性质,跟开发图形处理软件的兄弟们是一样的,说高尚点叫large scale system design and development,说俗了就是coding, coding and coding。

大家都说做IT的是民工活,其实公司里资历久,对核心产品底层architecture懂的多的技术骨干,工资也是很高的,而且地位高工作也稳定。

二、software QA(quality assurance)/testing

每年网上都有很多人发帖子说“我学cs,但是我编程能力比较弱或者不喜欢编程,将来我能不能不去coding?”做软件测试(QA/testing)就是一个选择。

从软件工程的角度来说,有人写软件,就得有人专门跟在后面找bug提高软件的quality。QA的活一直被轻视,以前曾经被认为是可有可无的东西,不需要专门的QA,现在被越来越重视了,当然还是有些人觉得qa不如做developers更重要,但是不可否认的事实是,QA不可或缺,QA工作现在很多,已经在计算机行业里占了很大的比例了。当年帮我settle down的师兄,03年去了微软,05年被调整做SQL Server软件的QA。

QA对技术的要求相对低。QA可以粗略的分成两种,一种是mannual testing,全手工测试,你不需编程,基本就是分析软件系统,制定测试计划和用例,然后用鼠标去点击为主,从技术角度来看,的确低级了点,早些年,developers觉得去做QA是降级,跟发配充军一个意思,所以QA不得不到处找,来源很复杂,做QA的整体技术能力也比较低下;现在随着公司对产品质量和测试工作的重视,有CS技术背景出身的qa越来越被青睐;第二种QA,做的是自动化测试(automated testing),就是用软件工具或者自己编程来自动化测试,这个就要求懂技术甚至要会编程,但是要求又没有developer那么高,这种技术性的QA也比较缺乏,现在的趋势是很多公司尽量用automated testing替代mannual testing来提高效率。

同样经验/教育背景,QA的工资应该比developer低,但是差别也不是很大。很明显,学cs任何一个方向的人,都可以胜任QA的工作。

2012美国留学热门专业解析:计算机专业

三、Database/network administration

developer和qa已经囊括了cs大多数的工作机会,继续写这个类别还是为了满足有些人既想学cs又不想编程的愿望 --- 话说回来,如果不想编程,最好别学cs了。。。。

数据库/网络管理对编程要求也很低,你不需要像开发数据库或者网络管理软件的人那样子,天天耗在编程里。这类工作优点很多:

1 就业范围广,稍微大点的公司、学校或者任何机构都需要有高级管理员来管理维护网络和存储备份数据库;

2 工作经验越丰富越受欢迎,因为很多job就是得经验丰富的administrator才能处理好,不是随便扒拉一个没多少经验的人就能凑合着做的;

3 信息社会,公司对数据库和网络依赖严重,所以有时候一个经验丰富的database/network administrator对公司可能非常重要,如果他突然撒手走了,公司又没有准备好替代人员的话,会损失惨重的。

因此,这类工作工资高,也比较稳定。前段时间有些金融公司即使大幅度裁员,核心的网络和数据库管理员也会被保留。

这类工作的缺点是入门比较难,公司希望你能有相关的实战经验而不仅仅是会点学校里的理论知识,刚毕业的学生往往根本没有这方面的经验;有时候需要在晚上或者周末工作,也可能有on call的情况出现。

四、Others

其他的工种也有,比如release management,用户界面(UI, user interface)设计,usability,Technical support等等,但是一方面这些工作数量相对少,另一方面,不同的公司里,相同的职位名称可能具体的工作性质不太一样,比如做release managment的,有的公司要求做很多QA的活,有的公司更靠近developers,还有的公司可能让你安装/搭建系统来管理不同的releases,跟个系统管理员似的,所以就不一一详叙。

最后,谈一下cs研究生教育和工业界需求的不同。

很多人来美国以前对研究生学习充满了期望,以为可以通过学习,迅速获得将来在社会上求职谋生的技能。这个想法当然没错,但是我想提醒,学校里侧重培养学术科研能力,传授理论知识,跟工业界需求不同。

大家都希望选择排名高的学校接受研究生教育,而这些学校,只所以排名高,很大程度上是因为理论研究做的好;research做的不好的学校,排名不可能高了,甚至是没有什么排名。

研究生学习,尤其是在一个侧重理论研究的氛围下,老师们强调的是你在一个小方向内深入研究,获得领域知识(domain knowledge)和解决问题的能力;学校里做research,经常可以听到强调”IDEA”(中文可以翻译成“点子”),把IDEA挂在嘴边,因为找到新颖的idea设计一套方法理论来解决学术问题,才是科研的核心;老师当然希望你有强大的编程能力来实现你的idea,但是找出idea远比编程更重要,因为编程能力可以慢慢培养,idea可不是你想有就可以有的。

研究生的课程,根本目的还是系统的传授理论知识给学生,而不是教学生如何使用某项具体技术,所以到了研究生这个层次,就没有什么很应用的课程比如说C++/Java了。开设的程序语言设计(programming language design)这种课程,也是从底层告诉你如何设计一个程序语言,而不是教你指针数组怎么用,类怎么设计。整体上,学校里轻视成熟技术,学校的老师不会很 excited陪你整天玩j2ee,.NET这些东西,尽管他们在工业界用途广泛。

相比之下,公司决大部分职位需要的是能熟练使用某些具体技术的人,公司基本不需要你卓越的研究能力和超群的理论水平。

2012美国留学热门专业解析:计算机专业

还是举三个例子方便理解

例子一

你很喜欢程序语言设计这门课,你深入的学习了如何设计一门语言让别人使用来编程,说起程序语言设计的各种问题,啥type system, scoping, parameter passing,evaluation mechanisms,你头头是道,班上就你一个人拿A。你鄙视了一下班上号称java/C++高手,但是只拿B的同学,然后信心饱满的去找工作。

有个公司里要找software developer,要求熟练使用某种语言,你觉得通过课上的学习,对常用程序语言设计上的优缺点有了很清楚的了解,你甚至写过一个很全面很深刻的总结,基本的object oriented concepts你还是会的。但是面试的时候,公司的人不跟你讨论任何语言的优劣,人家全是问如何使用某种语言,比如说 JDK某个类的methods有哪些能做什么,enterprise javabeans的知识,如何实现singleton的模式,什么是object oriented perl,给你个现实问题让你现场设计C++ classes,etc etc

如果你的技术水平不过硬,你立刻就傻眼了,一肚子的理论知识都白搭;而那些理论学习成绩一般的java/C++ experts,反而更容易应付自如。

学校的课程是讲授理论的,是tell you how to design a language, not teach you how to program in any language。research/theory和technology/application,是不同的。

例子二

XML曾经是数据库(DB, Database)的研究热点,多年前这项技术刚出现的时候,学校里的professor们会指导学生研究这个方向,比如研究针对XML的query如何设计如何优化,等你毕业的时候,你以为你是数据库专家了,但是去公司求职的时候,发现市面上还没有处理XML的数据库呢。你强大的xml数据库 domain knowledge就是屠龙之技,无用武之地。

等这项技术开始成熟了,oracle和SQL Server都决定支持XML存储和查询,招聘大量懂XML和数据库的人去开发,你才有机会;但是开发数据库的就那么几个公司,如果oracle和微软都不要你的话,你走XML+DB的这条路子就暂时断绝了。XML当然是项成功的技术,被广泛应用在各个domain,能query XML的DB engine也早就有了,但是学校里拿来发表论文的东西,有多少在大浪淘沙之后,能被工业界广泛采用?如果你辛苦研究的新颖理论/技术中途死掉了,你在这个小领域上的努力也就接近白费了。

也许你会说,我还有解决问题的能力啊,但是公司的人会说,我们花钱招你来是让你干活,解决实际问题的,不是让你来发论文的。我们用的就是 SQL的数据库,你说你懂数据库?ok,那我出SQL和Oracle的题目考你,回答的不好,我们不要。SQL的确不难,但是作为成熟的技术,不是novel idea,一些研究DB的研究生可能几年没碰过,万一人家出了个古怪或者复杂的问题,你被问倒了,没拿到job offer,那你不是要哭死?至于oracle这种大型软件,里面的东西就更多了,有些研究数据库的同学,可能用的是实验室自己开发的xml or data stream processing的prototype系统,根本不碰oracle。

例子三

你研究的是软件工程,而且是很新颖的用data mining technique或者formal methods来解决某个问题,还发表了一篇牛论文。公司的人乍一听专家来了,很兴奋,仔细一问,就说一句话,方法很好,但是实际上行不同,在工业界没办法应用。因为你的方法/理论做了一些的假设(assumption),而这些假设在现实中很难实现。

然后公司的人说,你解决问题的能力很强,很聪明,但是我们这里做开发的主要用C++,作为新人,你的编程工作会比较多,我来考你算法设计、设计模式和 C++编程的知识吧。again,如果你在学校里做科研项目用java(或者是更没人用的语言比如Scheme),一堆C++的问题考死你很容易。

不可否认,并不是所有的理论研究将来都用不上。我也听说有的人研究network performance,有的人研究存储技术,在公司里找到了可以大体上还可以学以致用的位置,因为公司有少数职位的确需要雇佣domain expert。但是通常情况下,工业界需要大量能解决实际问题的人,需要skilled workers,而不是理论专家。所以在面试的时候,很多人不是死在不懂research没有domain knowledge上(公司里大多数职位要求的domain knowledge翻翻书甚至有时侯看看wikipedia可能就足够了),而是死在C++/Java或者是数据结构、设计模式这种很基本但是很实际的东西上。

读研究生,学校希望能教给你领域知识和设计新方法解决问题的能力,瞄准high level的教育,提高你的理论水平;但是公司希望你能有解决具体问题的skills,懂得low level,down to the earth的具体技术细节,这些东西,最多是你研究生学习时获得的副产品而不是学习目的。这是根本原因。学校的做法没有错,学校就应该教给你理论知识,这样不管外面流行什么技术,你都可以很快理解学会,但是工业界急功近利,希望你来了就能熟练使用各种工具干活。深刻理解这种mismatch,在二者之间找个平衡,是你的责任。

追究讲谁对谁错没什么意义,这个问题也不是美国学校特有的。学校里当然要教给研究生理论知识,提倡学术研究,否则改成开java认证学习班算了。

美国有些学校注重工程应用,上课期间布置比较多的projects,学生需要动手解决问题,进行大量的编程工作,很培养能力;有的学校,设置一些很实用的基础课程给硕士生选。这些对于着眼于工业界就业的同学来说,比较有利;如果一门课,老师布置你读无数新发表的paper,那你从这些paper里获得的知识,将来去公司工作,很可能用不上。

可能有人说我的观点只注重眼前,不考虑长远发展,但是问题是不管是在中国还是在美国,我们的第一目标是先找到第一份工作再说,没工作,啥都免谈。找到工作以后,公司需要什么,我们就学习什么;有了工作,有了工资,啥有用啥流行咱学啥,而且很可能是公司出钱让你学,因为员工的培训(training)本来就是公司支持的。

最新文章