美国Computer Science学科细分
首先给大家介绍一下美国CS学科的分类。平时我们所说的CS其实是一个很广的概念,就像医学一样,很多不同的细的分科,这里我列了一些美国比较常见的分科。
软件工程数据库计算机网络人工智能计算机图形学和多媒体体系结构/编译器和并行计算人机交互管理信息系统信息安全理论和算法
软件工程,是关于计算机软件开发和维护的一门工程学科,简单一点可以理解为CS+管理科学。是整个CS里最弱化数学能力的分支,但概念性很强,有点像半个文科,而且特别强调实践,是所有分支里就业机会最多的方向,但可能不是最尖端,最有趣的方向。
数据库,涉及与数据管理相关的所有方面,可应用的领域有电脑游戏设计,数据隐私与安全等。数据库是CS各领域中最抽象和枯燥的方向。抽象体现在所用的数学知识全部基于离散数学和抽象代数,而不是连续数学,所以要学好并不容易;枯燥体现在它不像很多其它方向那样可以做出非常花哨的结果或图形界面。但学好数据库的话,就业非常稳定。
人工智能,AI可以说是目前CS最热门的方向了。说得通俗一点,例如人脸识别,虹膜识别,google的自动驾驶,微软的Hanover系统自动开药,医学领域的自动影像学、金融领域的自动算法交易都是AI的成果。大多数的科技公司,比如亚马逊、特斯拉、谷歌都把AI看成下一个十年里,公司的创新驱动力。
学习AI需要非常广泛的知识面和训练,不仅需要CS的雄厚的基础知识,还需要了解一些认知心理学、语言学、哲学和工程学的知识。除此之外,还需要掌握一些技能和工具,例如统计学、神经科学、控制、优化和运筹学。对于大多数计算机科学排名较高的高校,他们往往在人工智能研究方面也会极为出色。包括斯坦福大学,卡内基梅隆大学,麻省理工大学,加州伯克利大学,佐治亚理工大学等。
计算机图形学Computer Graphics,多媒体Multimeia。这个专业与人工智能、计算机网络、软件工程全都有交叉。研究图像的表达、处理等。计算机成像,三维动画,甚至网络影像传播都属于这个方向的范畴。学习这个专业的同学可以去游戏设计公司,电影视频制作公司找工作。总之,现在的生活离不开图形图像的数字表达处理,也就离不开学计算机图形学和多媒体的同学。
人机交互(HCI)也是最近大热的新兴专业。不过很多人对HCI都存在一个误区——人机交互就是设计界面,这是把人机交互和交互设计(Interactive Design)混为一谈了。事实上HCI是一个大型的交叉学科,它包括认知心理学,社会学,CS,需要涉猎的知识也包括软件,硬件,算法,Machine Learning, Deep Learning, 社会调查等。
举个大家熟悉的例子,多点触控技术就是人机交互研究的一大成果,这里面既包括算法的研究也包括硬件设备的开发以及软硬件整合的系统技术,以及手势规则的定义等,而交互设计,则可能是指在设计一个APP时,如何将产品的各个功能与特定的手势操作对应起来,以及实现这些功能的次序和条件是什么样的。HCI有两个大方向: 1) 偏Design的(属于艺术类方向,需要portfolio); 2)偏工程方向。理工科背景的学生一般都申请工程方向。
还有比如管理信息系统MIS本质上说就是一个数据库系统,它和其他数据库系统的不同就在于其目的用于整合必要的信息用于决策。MIS专业还分成在工程院(计算机学院)或者商学院(管理)下面。前者偏技术,后者是偏商科了。咱们中国人去美国读Master,当然是偏技术的那种毕业以后路子平坦一些。
还有信息安全和计算机网络,其实严格一点说是属于Computer engineering, 一些学校也会放在EE系下面。
体系结构/编译器和并行计算,Computer Architecture 计算机架构是讲计算机硬件组成的,属于CE或EE;编译器和并行计算申请的人也很少,理论和算法方向是理论层面的。
美国CS学校排名(USNews)和录取要求
美国学校排名版本特别多,但大部分参考的都是USNews的排名,而USNews也有两个排名,一个综合排名,一个专业排名。其实综合排名这个说法是不太准确的,因为这本来是属于本科类学科的排名。
你会发现在综合排名里,很多公立学校的排名不是很靠前,这主要是因为很多公立学校在招收本科生的时候,会考虑到不同州由于教学水平不一样,学生素质也不太一样,为了相对公平,会招收一部分可能不那么优秀的学生进来,所以就会拉低公立学校的录取水平,所以排名不是很靠前。但我们在申请Master或Ph.D的时候,应该参考专业排名,专业排名能比较准确地反映研究生院的水平。
这里我们把学校大概分为三档:
Top10
这一档是相对是比较难申请的。申请Top10你必须要有一定的亮点,不能有特别明显的短板。拿到录取的学生背景都是非常强的,研究经历、实习经历都很丰富,并且这些学生都很会包装自己,在文书中把自己的特点和优势最大化的展现。申请硬件的话也有一个大概的衡量标准可以给大家参考,当然申请也不是只看硬件,肯定是一个比较综合的过程:GPA3.8 ,T105,G320。
虽然Top10学校的CS都不太好申请,但也有相对比较好申的学校,当然只是相对,这种相对是跟斯坦福、麻省理工、伯克利这些学校来比较的。了解计算机专业都会知道CMU, 申请CMU有一个好处,因为这个学校的CS专业很大,所以相对的录取概率也会比较大,UIUC也同理。另外还有Georgia Tech,UT-Austin也会相对容易一点。
Top30
Top30的申请要求相对会容易一些,你可以有1~2个不太明显的缺点,但是也不能来一个GPA60,这肯定是不行的。这一档里我们会比较推荐哥大、普度、宾大、南加州、加州大学圣地亚哥分校和加州大学欧文分校。这些学校的毕业生还是比较好找工作的。如果你达不到Top10的水平,这些学校是很好的选择。TOP30的话,GPA3.5 、T100 、G 315以上是比较推荐的。
Top100
TOP100这个档次的学校跨度会比较大,但是在申请难度上的差别却不是特别明显,申请合理、条件中规中矩一些就能拿到录取。GPA3.0、T90、G310以上即可。这里面比较推荐的学校就有UC-Davis,UC-Riversie,TAMU, Stony Brook,NCSU等。
在申请这些学校的时候,排名不用看的太重,60名到70名差距不是很大。申请这些学校,首先需要考虑地域条件。地域好的地方,往往工作会比较好找。
举个例子,加州部分学校虽然排名比较靠后,但是毕业生的工作也会相当好找。除了加州之外,还有德州。因为德州现在在达拉斯那边已经形成了一个比较强势的IT圈。另外还有亚特兰大,亚特兰大北部的IT公司也是非常多的。还有纽约、波士顿,以及西雅图。
如何弥补申请中无法改变的短板?
有些申请短板是无法改变的,比如本科学校、GPA。想要大幅度改变GPA,这是比较难的,往往是需要花费很大的力气重修但是还是提升不了多少。所以如果你觉得自己定位是在TOP50,想冲一下TOP30,或者想TOP30冲TOP10,这种情况下,你就要想其他办法来弥补你的不足了。比较有效的方法主要有两个:
争取发表学术论文
第一个是发表论文,发表论文主要有三个比较好的方法。第一个是进你们学校教授的实验室,这个需要你去和教授谈,一般如果你成绩不错,表明缘由的话,教授一般都不会拒绝你,免费的劳动力一般他们都会要的。如果你进了实验室,他一般会让博士生或者硕士生带你。
如果你运气比较好,你碰到一些博士或者硕士师兄,他们正好要发论文,你去帮他们整理一下数据,画画图,哪怕做一些技术含量比较低的活,他们也有可能会把你的名字挂在上面,这样就可以完成你的论文任务了。完成这一步你可以淘汰一大部分的同学。
第二个方法,你可以利用暑假去中科院或者其他研究机构去实习,中科院和微软亚洲研究院的论文产量都是非常高的。
还有第三个方法,其实你不用把论文想的太难,你可以和你几个成绩好的同学做个项目,组队去出一篇论文,能找到老师指导的话肯定会更好。
增加自己的研究经历
这个方法其实和以上发表论文的三个方法差不多,但对于工业界的实习来说,最好是能找外资公司,能进名气大并且能接触一些核心工作肯定是比较好的,如果这两者不能兼得时间也比较充分的情况下,也可以做一个大公司类似打杂的实习,然后再去一个小公司接触一些核心,这也是比较好的。找外资公司还有一个好处,有机会可以拿到比较好的推荐信,一般如果学校是要求三封推荐信,最好是一篇来自于自己学校的教授,一篇来自企业,还有一篇来自研究所,这是一个比较好的搭配。
CS类交叉学科与跨专业
肯定有同学实在没有条件去弥补这些不足,但又想申请比较好的学校怎么办?其实还有一种曲线救国的方法——申请交叉学科。
因为如果你想申请CS,你不仅在和国人竞争,还有美国本土学生在和你一起申请,而美国学校在录取的时候肯定会多考虑自己国家的学生,所以CS申请难度相对会比其他专业更难一点。但是我们可以去申请一些交叉的学科,这些学科往往会比CS专业申请要求低一些,竞争也不会那么激烈。
比如ECE电子与计算机工程,听起来名字也非常像CS,还有比如计算科学与工程,这主要是偏向于理论计算的一个学科,但这个学科里面都是有偏向于Computer Science部分的。而且这些专业在找工作的时候,在难度和工资收入上和传统的CS没有明显的区别,但是录取要求会低很多,性价比很高。
CS如此热门,自然也是吸引了一大批同学想跨专业申请,如果想转CS,有哪些课程可以推荐?具体需要学哪些课程呢?
首先,大家可以在MOOC平台,包括Coursera,ex Uacity等等这些平台上修计算机的课,他们的课程是非常全面的,理工和商科类的都有,可以修完拿证书,认可度是比较不错的;另外就是可以去巴鲁克的官网修C++的网课也是可以的,在美国的认可度很高。
数学方面:线性代数,概率与统计和离散数学这几门是必修课,基本上国内的工科开设离散数学的比较少,如果没有这门课程的话看看学校可不可以选修,如果不可以选修这门课的话可以在Coursera,ex,Uacity等等平台上修这门课拿到证书也是可以的。另外就是可以参加国赛或者美赛,争取拿到比较好的奖项,也可以很有利于证明自己的数学能力。
计算机的课程包括:数据结构和算法,操作系统,数据库;如果时间有限,建议先攻数据结构和算法。编程语言方面最好会C语言,C++,Java和python等;跨专业申请有难度,但也并不完全不可能。
还有一种法子,你可以试着到美国后再本校转专业,在美国转专业是比国内容易很多的。这其实是一个比较好的方法,但是也不能够保证是一定可以的,而且你也要付出很多的努力,同时学两个专业的课程是非常累的。
其他关于美国CS申请的问题也可以在文末给我留言,我会给大家一一解答