近年转专业申CS(Computer Science)遭遇了申请滑铁卢,直申CS形式也并不乐观。
CS一向是留学党大热专业很多学生只是听说CS在美国很热门而且比较好找工作,所以便“跟风”一样的选择CS专业,即使自己本科专业不对口或无法适应专业课程也要削尖脑袋往里面钻。
然而,CS专业的录取标准攀升的速度也令人震惊:
前几年,CMU的Data Science相关方向每年缓慢增长100人左右,而2018年则突然增长到了500人。
UCLA的CS专业这个申请季收到了2000+offer,而招生院只预计招收100人。每一张offer背后,都是20个优秀申请人邮箱里躺着的拒信。
(图:耶鲁大学CS专业申请人数趋势)
要不要和千军万马挤独木桥,CS到底适不适合你?
在你决定“入坑”前,不妨来听听手握三大名校offer,斯坦福CS专业学长怎么说。
Jerry Zhou
码农界发际线最喜人的潮男/清华大学自动化专业毕业/Stanford, CMU,宾大名校offer加身/目前就职于Two Sigma
Jerry一直属于人脉圈中自带光环的存在。作为杀入对冲基金领域的码农大神。他会用专业的视角解读一下美国CS现状,以及更重要的是,如何拿下了大牛offer。
Q:学长来说说当初为什么“入坑”的?
A:
选择CS专业是一定要做好“入坑”的觉悟的,不能脑子一热大家都觉得好就申了,等真的上了船发现根本不适合自己或者自己hold不住,再去转专业得不偿失。前期的规划非常重要,重点是要有自己的想法。我当初选择CS主要是有这几点考虑。
第一、美国CS行业就业形势远好于其他专业(80%的岗位给CS学生开放),特别是Silicon Valley(硅谷),San Francisco(旧金山/三番),机会太多了,对码农的需求量也大,只要你认真准备求职一般都能拿到不错的offer。
第二、对比与美国的其他行业以及国内同行,美国码农的收入水平普遍较高(国内外CS行业比较),有实力背景不错的起薪达到11-12万是常见的。
第三、我觉得是对每个热爱IT行业的人来说最具吸引力的,可以接触最顶尖的行业人才,学知识,长本领!牛人遍地都是,勇敢的上门尬聊,让大神带你飞。
第四、可以说再简单不过了,我喜欢码呗。
Q:学长能不能说说申请CS需要注意的点?
A:
第一、GPA、语言都是入门砖:高GPA,高语言成绩不会给你带来特别大的申请优势,但是如果成为短板,肯定是不利于申请的。
第二、注重科研、实习、Opensource项目、编程竞赛 :CS说到底是一个实践性的学科,光说不练没有用。优秀的paper,精彩的实习经历,contribution to opensource, 都会成为你申请中的闪光点。
第三、不要小看推荐信、套磁:这个对于PhD申请来说是非常重要的一环。美国的academia圈子其实非常重视“关系”, 如果申请中拥有对方耳熟能详的大牛的推荐信,可以说是有决定性作用的;套磁这一环其实也是尽可能的和教授提前“搞好关系”, 这在决定录取的最后committee讨论一环很有作用。
题外话:学校并不决定一切,好的学校不保证你找到好的工作,“差”的学校也能学到非常牛X的本领。另外学校的地理位置也很重要,比如CMU的硅谷校区就业率就很高。
Q:现在Machine Learning非常火,对于想入门这个领域学习的你有什么建议吗?
A:
确实是个很火的方向,实用性和商业潜力也是非常的大。
但对于没有态度基础的同学来说,首先在本科期间把学校的基础课程学好,比如数理统计,数学分析,运筹等课程。其次我想说的是关于基本工具方面入手学习,不用过于追求大突破,把几个基本工作操作熟练就够了。我个人比较推荐的Google Tensorflow, 就非常不错,国外很多大公司都会常常使用到,如果你能熟练运用,在大公司的求职中是绝对有优势的。
Q:很多同学想申请CS专业,但是对自己的申请背景没有概念,能简单说一下申请方向和背景有着怎样的联系吗?
A:
这点我想提醒大家的是,方向的选择不仅仅取决于兴趣,同时也取决于你当前说从事的学习和研究,以及你本科阶段的专业基础。
那么有的同学会问,我本科的专业没有方向,那我肯定会选择这个大范围内自己喜欢的方向了。也会有同学说,我研究生阶段的方向并不是我感兴趣的我不想申请这个方向,浪费时间,其实这些想法都是正确的。
我很支持有一定想法的同学,其原因很多我就不一一说明了,我只是想提醒大家一下,如果你在兴趣方向上并不具备任何的基础或者背景,或者即使拥有也并不是非常丰富的背景,那么申请的结果很大可能就是没有结果!这个是很现实的情况,导致这种情况的主要原因就是你的背景与你申请方向的脱离。
有的同学问,那么我在CS范畴内进行分支方向的调整,而不是跨专业那也不可以么?我的回答是,没有不可以的事情。
只是我们的研究是在于可行性的大小,分支方向的调整可行性相对高一些,不至于隔行如隔山,但大家要知道,既然研究方向彼此分开那么必然有着它们独立的特点,如果一定要转换的话,那么就要下更大的工夫更多的精力去深入的学习和研究这个方向。可是我们要知道即使这样的话是否可以对于我们背景有本质的改变仍然是个未知数,所以还是奉劝大家慎重处理。
听学长讲了这么多,CS专业可以说是让人又爱又恨,只有通过真正了解自己,了解专业,才可以成功地选择专业。
什么是CS?
计算机科学(Computer Science,缩写CS)是系统性研究信息与计算的理论基础以及它们在计算机系统中如何实现与应用的实用技术的学科。它通常被形容为对那些创造,描述以及转换信息的算法处理的系统研究。计算机科学包含很多分支领域:有些强调特定结果的计算,比如计算机图形学;而有些是探讨计算问题的性质,比如计算复杂性理论;还有一些领域专注于怎样实现计算,比如编程语言理论是研究描述计算的方法,而程序设计是应用特定的编程语言解决特定的计算问题,人机交互则是专注于怎样使计算机和计算变得有用、好用,以及随时随地为人所用。
美国计算机科学专业主要有十大分支:
软件工程、数据库、计算机网络、人工智能、计算机图形学和多媒体、体系结构/编译器和并行计算、人机交互、管理信息系统、信息安全、理论和算法。
世界上第一个计算机科学系是由美国的普渡大学在1962年设立,第一个计算机学院于1980年由美国的东北大学设立。
计算机科学领域的最高荣誉是ACM设立的图灵奖,被誉为是计算机科学的诺贝尔奖。
CS与CE的区别
CS和CE这两个项目非常相似,两个项目都学习编程和软件开发的基础学科,两者之间最基本的区别可以归结为理科(science)和工科(engineering)的区别。science的意思是知识或学问,它是来自拉丁单词“to know”,engineering则是来自拉丁单词“to contrive”。因此从操作层面来看两者的区别是CE的学生拥有对电路、电子学和VLSI设计的非常深厚的认知,而这些都是现代计算机实际结构中至关重要的;CS的学生学习的是代数、计算和编程语言,这些构成了高级程序设计和计算的基础。但是这样的描述事实还是不够准确,因为比如SE(Software Engineering )分支有时候会放在CE下,有时候又会放在CS下,这也要具体情况具体分析,具体学校具体对待。
我们可以这样来理解:广义的CE就是应用性的computer相关的,CS会更理论一些。这也就是为什么SE(软件工程)是软件相关,可是却会放在CE(计算机工程)下的原因,SE是用工程的思维去开发一个软件项目的方式方法的学习。另外一方面,有一些狭义的划分,SE又会放在CS下,这样的划分就是按照软硬的划分了,CS是软,CE是硬。但是核心都是computer。因为每个学校都有自己的划分方式,所以没有统一的标准。同时,软硬现在已经你中有我,我中有你了。比如说,CPU里是有指令集的,离开了指令集,CPU也没有办法工作。而先进的软件都会针对硬件进行优化,没有足够的优化,就会出现多年前经常会出现的兼容问题了。这是两者之间的区别。
CS在计算机系统和软件的理论和设计,以及重要的应用领域培养学生。
美国CS分支学科及录取情况
1、Artificial Intelligence 人工智能(★HOT)
人工智能做为当前计算机科学专业下最热门,最有发展前景研究方向,因此所招收的国际学生多具备很强的学术背景,在该方面有着非常突出表现的人才。MASTER招收的并不多,主要是PHD的学生居多。
由于这个方向更多的强调数据表述及算法方面的知识,所以当申请目标定位在这个方面的时候可以整理一下自己在这些方面的背景,看看对于这个方面的理解是否很深度.如果不够深入的话需要及时进行相关的学习。
2、Bioinformatics 生物信息学
这个专业有的时候需要计算机背景的学生,有的时候需要生物学背景的学生,招收的国际学生非常少,而且一般被录取的国际学生出了有出色的硬件条件同时也具备很强的研究经历,申请难度较大。一般研究生毕业被录取的几率相对更大一些。
除非大家在这两个方面都具备非常强的实力,可以放手一拼,否则不如考虑申请纯CS的其他专业,申请这个方向需主要具备数学、信息学、统计、计算机科学、化学和生化方面的知识,或者综合知识,一般来说本科生很难达到这种要求。
3、Computer Architectures/Hardware Systems and De sign/VLSI
这个方向主要从事计算机硬件芯片,例如CPU的结构设计,内部结构逻辑门的电子开关,了解VLSI的同学应该知道这个方面的研究深度和难度,申请者必须具备很强的逻辑电路基础知识.
这三个方向的申请因为其就业环境的影响,申请热度下降的非常快,因为更偏向于理论性的研究因此申请的难度也很大,奖学金情况也不乐观。
4、Human-Computer Interaction/Graphics/Visualization(★HOT)
需要掌握计算机制图、计算机成像的一些基本工具及其原理,但这通常往往不足以满足录取的要求,因为这种应用性极强的方向更多的强调经验,你是否从事过相关的工作,本科学生要谨慎选择!
人机交互技术的申请热度随着这个在业界的关注度提升而渐渐升温,但该方向对于申请者的背景要求同样很高,多数录取者也是具备研究生学位。因此对于本科毕业的学生来讲申请这个方向的难度也是相当大的。
5、Computing
Computing对描述和转换信息的算法过程的系统研究:它们的理论,分析,设计,效率,实现和应用。 在Computing专业下的基本问题是“什么可以(有效)自动化?”
6、Multimedia/Networking 多媒体技术/网络技术
选择这两个方面需要注意的并不是专业基础,而是选择学校的层次,尽量避免竞争。
这两研究方向越来越多的出现在EE,ECE专业下,不过计算机背景的学生在申请这两个方向的时候仍然具有相当不错的竞争力。是国际上竞争比较激烈的方向之一。
7、Information science/Information retrieval /Information Security
美国国内的热门方向之一,貌似老美对于与信息技术挂钩的学科都是更多的开放给国内学生,国内学生也是非常热衷这些方向,除这个专业外,像信息系统、信息安全技术、信息恢复、数据库方面国际学生申请的情况非常惨烈。如果你在这些方面有所专长,还是可以尝试的。
8、Software Engineering/Programming Language
本科学生,全世界的国际学生申请最热衷的方向。录取的名额较多,但奖学金较少,受IT泡沫破碎影响最为严重的方向,不过大家要对这个方向有信心,因为拒可靠消息称,这个方向虽然研一入学时的funding不多,可是第二年之后的钱还是蛮不错的,关键要跟一个有水平的BOSS,基本上踏踏实实的干活,别的都不用愁了。
9、Linguistics 语言语音识别
学生将在这个专业学到:
理解推动现代语言学研究的基本问题,包括形式结构,普遍性,习得,历史变化,变异和社会使用维度,以及语言理论核心领域的基础知识。
能够精确识别和描述语言数据集中的经验模式,并通过制定,测试和完善有关这些模式的假设来构建合理的语言分析。
通过书面论文和口头报告展示自己的研究和/或审查文献的经验。
10、Computer Engineering
与软件工程相似的方向,CE里也有一些方向是CS没有的,比如嵌入式系统设计。也有的人认为,凡是EE里偏软件的方向就算CE,比如Digital IC Design,经常用软件来做。而wikipedia上的定义里,则是把电路设计这块都给算成CE了。
11、Management information system
这个方向设置的MASTER课程不是很多,相对PHD少了一些。申请的时候要注意,因为涉及到管理,所以很多管院也开设了这个方向,更多的偏向于管理。CS下的这个方向仍然主要是技术,如果CS下MIS出身的想改行去管院读MIS的话也有不错的优势。曾经有人拿到过MBA下边的这个MIS的MASTER半奖录取。
CS需要哪些前置课程?
对于想读CS专业的同学,无论转学还是申请研究生、博士,第一个要考虑的点是,哪些专业是可以申请CS的?也就是说先导课程是满足申请CS需求的。
一般申请时招生官比较注重学生所学的课程,所以前置课程都满足而且成绩不错的话即使专业并不是计算机也是可以选择申请CS专业的。
计算机科学专业Transfer的常见先修课
1. Calculus I, II, III 微积分
2. Differential Equations 微分方程
3. Calculus-based Physics with lab 物理(带实验)
4. Chemistry with lab 化学 (带实验)
5. Computer Programming, C++ preferred 编程
例如,康奈尔大学的CS本科专业的转学先修课要求:
Object-Oriented Programming and Data Structures 面向对象编程于数据结构
Data Structures and Functional Programming 数据结构与函数程序设计
Computer System Organization and Programming 计算机系统结构与编程
Discrete Structures 离散结构
Basic Calculus and Linear Algebra 微积分基础与线性代数
申请CS硕士常见先修课程
很多学校的硕士申请页面都有明确的列出要申请这个硕士项目的先修课程,可以自行去官网查看。例如波士顿大学的CS硕士先修要求:
如果有心观察的话,你会发现他们要求其实很低,通常是要求一门数学课程(比如《高等数学》),一门计算机基础课程(比如《计算机基础》),一门语言课程(比如《C 语言》),一门算法课程(比如《数据结构与算法》),一门高级语言课程(比如《C++ 语言》)。
但是请你想想,如果你仅仅是修了这么几门课,怎么和计算机专业的学生竞争呢?所以,柚子的建议是:尽量多修。以下是柚子认为申请 CS 时比较重要的先修课程:
一级重要:
高等数学
离散数学
计算方法
计算机基础
数据结构
计算机算法
C语言
C++
操作系统基础
二级重要:
线性代数
概率论与统计
自动机理论
计算机组成结构
计算机网络
数据库
三级重要:
Java 等其他高级语言
软件工程
人工智能
机器学习
计算机图形学
信息安全
编译原理
其他CS高级课程
CS专业MS&PHD的区别是什么?
大家明确了自己的申请方向,和申请目标之后,我们再来探讨一下学位的选择,这个方面对于申请的成功与否也有着非常强的必然联系性。
美国大学培养方向上的区别
大家都知道美国大学的MS培养方向是培养应用性人才,我们可以从MS的课程设置上很容易看到这一点,更多的实践性工作,更多的应用型项目,课题的研究,促使在MS上的培养更加面向实际的研发工作。CS下很多的热门方向都有着这样的目的和特点。
那么PHD就更多的面向研究,当然也包括应用层面的研究,但这种研究更深入更偏向于基础原理。PHD的根本培养方向也就是培养研究型的人才为目的的原因。这一点美国大学做的也非常好,基本上PHD毕业的学生,大都可以走向科研岗位,无论是任教还是在科研机构,都是基础研发的核心人员。
申请的难易程度上的区别
MS的申请对于本科生来讲相对比较容易,因为凭借美国大学对于这个学位的培养方向我们可以看出,应用层的培养并不要求申请者具备很深入的理论研究基础,更多的是看重申请者的应用能力,所以我们可以看到即使是专业排名比较靠前,综合排名比较靠前的学校,也会发出很多的MS学位的录取,同样因为它对于今后的就业方面在美国的状况非常好,所以也被非常多的学生所关注。很多学生将美国的MS学位培养比喻成中国的技校,去了你就能学会如何做一些东西,出来了你就会有很多机会在社会、企业找到一个就业的位置。因此竞争也是非常激烈的,淘汰率也相应的提高。
PHD的申请尤其是CS的某些研究型方向的申请就不是很乐观,当然这只是一种角度的说法,很多本科毕业的申请者在申请后期得到学校的反馈,建议他们改为MS其主要原因是要求PHD要求的是相关研究的经验,雄厚的基础。所以对于在职的人员,研究生毕业的申请更加感兴趣。本科毕业的申请者相对要求就会偏高,难度比较大。
奖学金发放情况的区别
对于很多专业来说PHD的奖学金都是要比MS的多,PHD学习时间长,可以接手相对较大的课题,因此奖学金确实比MS要好申请一些。但通过上边的分析大家也能感觉到PHD的这个奖也并不是这么好拿的,这要求申请者具备相当强的竞争实力。从目前的申请情况来看申请CS的人群最大的变化是申请者数量的减少,但精英确增加了许多,在专业领域有着一定积累的人越来越多。因此PHD奖学金的申请的难度不在于竞争人数,而是在于整体水平。
那么MS的奖学金不是没有,只是不多。因为很多背景实力很强的申请者,对于未来发展的规划并没有考虑向研究型发展,因此选择了MS,接收他们的教授有着比较重量级的课题,这样也会慷慨的拿出资助来,但数量相对少的很多。值得我们关注的是,MS的AD的发放始终保持着旺盛的势头,除了综合前20的学校,专业前10的学校以外,其他学校对于MS的录取标准始终保持在相对较低的情况,也就会使得家庭有一定经济基础同学获得了相对更多的机会,这里也要注意这个MS虽然入学没有奖学金,可是入学后的第二年拿到全奖或部分奖的几率还是非常大的!
同时,学长也帮我们细数了一下美国CS专业名校及其录取偏好:
卡耐基梅隆大学
综合排名:25 专业排名:1
讲到美国的计算机专业,就不能不提CMU。CMU专排是和MIT、stanford、UC Berkley 并列第一,同时也是全美计最大的计算机学院,CS下的细分专业也非常全面。另外值得一提的是,CMU 现在有两个校区,主校区位于宾州的匹兹堡,还有一个是 2002 年在硅谷开设的新校区—CMU Silicon Valley。相对于主校区地理位置在东北部,硅谷的地理位置优势在于所有的顶级互联网公司都在附近,找实习、找工作非常便利。
CMU的计算机科学学院,下面设有7个系,分别为:计算机科学部门(Computer Science Department)、软件研究所(Institute for Software Research)、人机交互研究所(Human-Computer InteractionInstitute)、机器人研究所(The Robotics Institute)、计算生物学部门(Computational Biology)、语言技术研究所(Language Technologies Institute,LTI)和机器学习部门(Machine Leaning)。
麻省理工大学(MIT)
综合排名:3 专业排名:1
麻省理工学院(MIT) 连续六年在计算机科学排名中一直名列第一(也是QS世界大学排名®的世界领先者),今年在声誉方面取得了最高分。
它的电气工程和计算机科学系是该大学中最大的,与UCB一样,提供EECS本科课程,该课程将两门课程结合成一门专业,课程灵活,实用,密集的课程作业,为学生提供广阔的视野。
斯坦福大学
综合排名:7 专业排名:1
斯坦福大学在计算机科学领域名列美国和世界一流大学之首,在两项研究影响指标方面均达到完美分数。
斯坦福大学的计算机科学系得益于其在硅谷中心的地理位置,该系的校友们已经发现或共同创建了诸如Netflix,Mozilla Firefox,YouTube,WhatsApp和Google等大公司,目前的教职人员包括图灵获奖者。
加州伯克利分校(UCB)
综合排名:22 专业排名:1
加州大学伯克利分校(UCB)保持其在计算机科学世界排名第一的位置,同时也是美国排名第四的美国顶尖大学。UCB的电气工程与计算机科学系提供两个高度选择性的本科课程,包括EECS理学学士课程,该课程结合了计算机科学与电气工程的基础知识,为学生提供动手,跨学科和动态的教育。
普林斯顿大学
综合排名:1 专业排名:8
普林斯顿大学在计算机科学领域保持世界第八位,每篇论文指标的引用率近乎完美。自从Alan Turing,Alonzo Church和John von Neumann入驻后,该大学一直处于计算机科学的前沿。它的计算机科学课程强调独立工作,是课程的一个关键方面,学生至少要完成一个独立的设计或研究项目。
加州大学洛杉矶分校(UCLA)
综合排名:19 专业排名:13
加利福尼亚大学洛杉矶分校(UCLA)在今年的计算机科学排名中名列第13位,同时两项研究影响指标的分数都很高。计算机科学是亨利塞缪尔利工程与应用科学学院的一部分,本科生可以选择计算机科学或计算机科学与工程学士学位,后者的目标对象是希望获得计算机科学基础,同时也对计算机系统硬件产生浓厚兴趣的学生。