CS专业
随着以AlphaGo为代表的人工智能开始走近人们的日常生活,再叫上程序猿们令人无法不心动的超高待遇,CS当之无愧成为了现如今最炙手可热的专业,没有之一。在某些论坛上,劝人报考CS、转CS已经成为了热心群众的日常。而出国读CS的浪潮,更是一年比一年火热。这两年接触到很多学生:学EE的、学数学的、甚至学生物的都相继转了CS。确实,CS良好的就业出路、不算很高的学习门槛,都让它成为了这个年代学生们的一个好选择。而以美国为代表的国外优秀的CS学习环境和就业环境,也吸引着万千学子申请国外的CS项目。
然而,在选择CS之前,你确定自己真的了解,真的适合以及真的喜欢这个专业吗?在你决定出国继续学习CS之前,你知道CS都有哪些研究方向吗?你知道CS都有哪些好学校或者性价比高的学校吗?
如果你不能确定自己的答案的话,那么赶紧往下看,这篇文章会帮助你分析、认识、了解CS学习和申请中的方方面面!
本文主要分为四个部分:
第一部分:
CS是什么,要学什么
维基百科里是这么介绍Computer Science的:
Computer science is the stuy of the theory, experimentation, an engineering that form the basis for the esign an use of computers. It is the scientific an practical approach to computation an its applications an the systematic stuy of the feasibility, structure, expression, an mechanization of the methoical proceures (or algorithms) that unerlie the acquisition, representation, processing, storage, communication of, an access to, information.
可以看出,计算机科学是一门软硬件结合、理论与实践结合的科学。国内重点大学本科计算机专业的官方名称为“计算机科学与技术”,这也说明CS既包含理论研究,也包含实践应用。
那么计算机专业的主要课程都有哪些呢?
以某985学校为例,在本科期间需要学习的基础数学课程有:高等数学、线性代数、概率统计、离散数学;专业必修课程有:计算机科学技术基础、C语言程序设计 (及实验课) 、C++语言程序设计 (及实验课) 、数字逻辑 (及实验课) 、数据结构与算法分析 (及实验课) 、汇编语言程序设计 (及实验课) 、JAVA程序设计、操作系统原理 (及实验课) 、计算机组成原理 (及实验课) 、计算机网络 (及实验课) 、数据库系统 (及实验课) 、软件工程 (及实验课) 、编译原理 (及实验课) ,以及一些开发实践实习的课程。
从课程安排和学习中,可以看出CS专业要求学生能够理解计算机系统的运行原理,了解计算机软硬件的组成构造,明白高级语言与低级语言乃至机器语言之间的关系,和高级语言被计算机编译理解的过程,掌握基本的程序设计和软件开发技术,能够深入理解计算机操作系统、计算机网络及数据库技术等。CS专业的同学一般应该具有较强的逻辑思维能力、动手能力和创造能力。
所以,如果你喜欢理论研究和实践相结合,对编程和ebug (调试除错,需要条理和耐心) 感兴趣,不排斥长时间对着电脑工作和思考,喜欢和小伙伴们一起开发很酷的应用,或者想要研究与计算有关的各种问题,那么CS专业很可能是一个不错的选择哦。
【区分:CS和CE】:
有些同学可能会发现,在申请一些学校的时候,有Computer Science和Computer Engineering两种项目傻傻分不清楚。实际两者之间最基本的区别可以归结为理科 (science) 和工科 (engineering) 的区别。从操作层面来看两者的区别是CE的学生拥有对电路、电子学和VLSI设计的非常深厚的认知,而这些都是现代计算机实际结构中至关重要的;CS的学生学习的是数学、算法、架构、计算和编程语言等,这些构成了高级程序设计和计算的基础。我们可以理解为CS是偏理论的,CE是偏应用的。不过需要注意的是,不同学校可能有着不同的划分方法,我们还是要以学校官网的描述为准。
第二部分:
CS的研究方向有哪些
CS有很多不同的方向和分支,申请CS项目的时候 (特别是Ph.D.) ,选择方向是一个大问题,因为不同的方向有着不同的课程、培养方案、实验室,也对应了不同的毕业去向,以及竞争激烈程度。
在申请的时候,我们最好有1-3个主申的方向,最好不要完全专注于过于热门的方向 (否则有全聚德的风险) 。
博士的方向主要还是取决于自己导师的研究方向,但是理论上讲除非项目限制,入学之后依然可以改变自己的研究方向。有的学校 (比如马大的Ph.D.项目) 是录取学生到general program里,入学之后再来确定导师和方向。但是在申请的时候,学校还是会让大家填写自己的兴趣和倾向的。所以,无论如何,在申请之前,我们还是要了解CS都有哪些研究的方向。
按照US News的分类,Computer Science被分为四个大类:AI,Programming Language,Systems,Theory。不过在CS申请的时候 (尤其是Ph.D.申请) ,往往在这个基础上还会再分更细的方向。不同的学校可能会有不同的分类方式 (比如把几个小的分支合并起来) ,这很大程度上取决于师资的分布情况,但是大体上CS的研究与申请可以分为如下几个方向:
1. Artificial Intelligence an Robotics(人工智能与机器人)
AI是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。主要包括机器意识 (包括机器学习,知识表达与推论,机器人) ,动态系统模拟,动力学计算,触觉控制,自然语言习得与处理,计算语言学,统计语言技术,自动推理,图形图像,人机交互,成像感知与传感器,概率推论,神经估算,计算机视觉,视觉场景认知,模式识别,人工免疫,神经网络,遗传算法,小波分析,信息系统以及计划,信息提取,制造和控制理论等。AI方向的顶级会议有AAAI、IJCAI等。Robotics方向的顶级会议有ICRA、IROS、RSS等。
AI是如今最热门的方向,下面又包含很多细的分支,在申请PhD项目的时候经常是细分到这些小分支的:
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。ML方向的顶级会议有ICML、NIPS等。近几年机器学习的热度一直居高不下,尤其是Deep Learning (深度学习) ,已经被应用于其他分支和领域。ML的研究和本科的机器学习课程作业可大不相同,不是“调包”,而是“创造包”,需要比较强的数学能力 (机器学习和统计有密切的关系) 。目前国内外对ML人才的需求和待遇依然很高,不过随着大量的人涌入这一领域,就业形势不一定会一直好下去。而且随着这个学科的发展和自我完善,市场的需求也会变化。但是毫无疑问,顶尖的ML科研人才依然会非常抢手。
计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别、跟踪和测量等,并进一步做图像处理,成为更适合人眼观察或传送给仪器检测的图像。比较经典的计算机视觉应用包括识别 (如在巨大的图像集合或视频中寻找包含指定内容的所有图片或视频片段) 、运动 (图像跟踪:跟踪运动的物体) 、场景重建以及图像恢复等等。CV方向的顶会有CVPR、ECCV、ICCV等。CV后来居上,目前也是最热门的方向之一,未来的发展前景可期,所以在今年的申请中,CV已经成为了CS申请竞争最激烈的战场。所以如果你想申请CV方向,最好在本科就已经有了CV相关的科研经验。
数据挖掘是一个新兴的方向,是人工智能技术和数据库技术的交叉。数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程。数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统 (依靠过去的经验法则) 和模式识别等诸多方法来实现上述目标。数据挖掘的顶会有KDD等。有一些学校会在研究领域中单独把DM列出来,有些学校则会将其与大数据、数据库或机器学习合并。数据挖掘更像是运用人工智能技术,解决从海量数据中发现知识的问题,比如社交网络中的关系发现、智能推荐等等。喜欢解决实际问题的同学可以考虑这一方向。
自然语言处理研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。NLP方向的顶会有ACL、NAACL、EMNLP等。NLP也是今年来发展迅猛的一个有意思的方向,一些学校的NLP招生会面向计算机和语言学两个专业背景的学生,足见NLP是语言学和计算机的交叉结合。NLP方向的申请没有ML、CV那么火热,但是应用场景多,发展前景广阔,也是一个很不错的选择。
信息检索广义上是信息存储与检索,是指按照一定的方式组织和存储起来,并能根据用户的需求要找出其中相关信息的过程。信息检索是一个跨学科的领域,它对应于从信息源集合中找到满足信息需求的相关信息单元的过程。数据通常是文本的,尽管越来越多地使用Web作为数据仓库,已经导致包括多媒体数据,如图像、视频和声音,其中精确匹配被相似性搜索代替。Web & IR方向的顶会有SIGIR、WWW等。这个方向的申请相对没有那么热门,有时会和Geographic Information System (地理信息系统GIS) 被划分到一起。但是好像美国国内的学生比较喜欢信息技术这个方向,对转专业的同学来说门槛也相对较低。
2. System an Network(计算机系统与网络)
其实计算机系统是一个很大的分支,内容包括OS (操作系统) 、Architecture (体系结构) 、Network (网络) 等等。系统研究的目标是开发使软件能够在硬件上高效和可移植地运行的关键抽象和服务,为其他软件的研究提供基础。计算机网络是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网络的硬件、软件及资源共享和信息传递的系统。简单的说即连接两台或多台计算机进行通信的系统。Architecture方向的顶会有ASPLOS、ISCA、MICRO等。Network方向的顶会有SIGCOMM、NSDI等。OS方向的顶会有OSDI、SOSP等。系统与网络是CS下的一个非常老牌的方向,一般的CS系都会开设这个或类似的研究方向。对口的职业包括系统管理员,系统工程师,网络工程师等。与AI等方向相比,更加偏向硬件,出成果的周期也相对较长,所以申请的热度不太高。
3. Algorithms an Theory(算法与理论)
广义上面的算法是指为解决一个问题而采取的方法和步骤,而CS下的算法则是指计算机为了解决某一个问题或者完成某一个任务的一系列清晰的指令。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。现代的算法理论主要的研究目的在于如何开发出更加效率的算法,研究相关的算法的设计方法与实现技术。计算机理论,顾名思义,是为计算机科学的发展与研究提供理论基础的一门学科。这个课程的学习涉及到CS的核心课题,归纳起来涵盖了可计算性、文法与自动机、逻辑学、复杂性及语义学等5个部分,涉及到可计算性理论、形式语言、逻辑学与自动演绎、可计算复杂性和编程语言的语义等内容,并学习和研究这些内容之间的联系。Algorithms an Theory方向的顶会有FOCS、SODA、STOC等。可能是因为对数学的要求比较高,CS出身申请这个方向的人似乎不太多,但是我知道的数学专业转CS的童鞋很多都申请Theory (所以我这种数学渣就望而却步了) 。
4. Privacy an Security(计算机隐私与安全)
计算机安全主要是保护计算机与网络免于滥用和干扰。从过去的历史看来,计算机攻击一般来说包含了攻击系统的完整性,保密性与可用性。而如今的信息安全技术一直在发展中,不单包含了对上述攻击的防御,同时也增加了更多的应用,如垃圾邮件,以及防止身份盗用而导致的信息泄露等。Cryptography (密码学) 方向的顶会有CRYPTO、EuroCrypt等。Security方向的顶会有CCS、IEEE S&P、USENIX Security等。
5. Database(数据库)
数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库的研究涉及与数据管理相关的所有方面,包括数据存储,数据检索,数据分析和视觉化,如为超大型数据组开发高效算法,为各种新型的应用领域建立大型的数据系统,也有与其他领域进行跨学科的研究,可应用的领域有电脑游戏设计,数据隐私与安全等。Database方向的顶会有SIGMOD、VLDB等。
6. Computer Graphics(计算机图形学)
计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。 如何在计算机中表示图形,以及如何利用计算机进行图形的生成、处理和显示的相关原理与算法,构成了计算机图形学的主要学习内容。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看,图形主要分为两类,一类是由线条组成的图形,如工程图、等高线地图、曲面的线框图等,另一类是类似于照片的明暗图 (Shaing) ,也就是通常所说的真实感图形。Graphics方向的顶会有SIGGRAPH等。对数学能力的要求很高,不喜欢数学的同学要慎重哦。
7. Software Engineering(软件工程)
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。软件工程的关注点是如何为用户创造价值。在学习内容方面它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。SE方向的顶会有FSE、ICSE等。
8. Programming Language(编程语言)
包括开发新型编程语言以助程序员实用高效地开发可靠的软件,计算机辅助语言学习,计算语言学,从初阶的打字理论,自动定理证明,语义学等发展到如今的基于语言的途径以解决计算机安全与分布式编程中的重大问题,语言应用,编程分析与优化等,可以从根本上提高软件可靠性与安全性。PL方向的顶会有PLDI、POPL等。
9. Bioinformatics an Computational Biology(生物信息学与计算生物学)
人类基因工程的完成对现代生物学中的新型计算和理论工具提出了新的要求。这些计算和理论工具对于分析,理解和控制生命的具体信息都是至关重要的。生物信息学与计算生物学在此历史背景下应运而生。此方向属新兴的研究,主要是利用应用数学,信息学,统计学与计算机科学的方法来研究生物学的问题,因此也需要从事此方向学习和研究的学生有较强的数学和统计背景。目前来说研究方法包括对生物学数据的搜索 (收集和筛选) ,处理 (编辑,整理,管理和显示) 及利用 (计算和模拟) 。此方向的顶会有ISMB、RECOMB等。这也是一个新兴的方向,不过对学生有比较高的要求,最好有计算机和生物的双重背景,研究经历也非常重要。
10. Human Computer Interaction(人机交互)
人机交互是一门研究人、计算机以及它们之间的相互影响的学科。人机交互技术是指通过计算机输入、输出设备,以有效的方式实现人与计算机对话的技术。它包括机器通过输出或显示设备给人提供大量有关信息及提示请示等,人通过输入设备给机器输入有关信息,回答问题等。人机交互技术是计算机用户界面设计中的重要内容之一。它与认知学、人机工程学、心理学等学科领域有密切的联系。HCI方向的顶会有CHI、UbiComp/Pervasive/IMWUT、UIST等。
11. High Performance an Scientific Computing(高性能和科学计算)
高性能计算指通常使用很多处理器 (作为单个机器的一部分) 或者某一集群中组织的几台计算机(作为单个计算资源操作)的计算系统和环境,来解决主要的科学和工程问题。科学计算,又称为计算科学,它的主要学习内容和研究领域是利用数学模型的构造以及数量分析的技术,通过计算机来分析和解决科学问题。在实际的应用中,科学计算经常用于计算机仿真以及其它各种问题的数学计算,包括数值模拟、模型拟合与数据分析以及最优化计算等等。数值分析,是科学计算专业方向中所会应用到的核心方法。HPC方向的顶会有HPDC、ICS、SC等。
以上列出的是CS申请中经常出现的和比较热门的方向,其实除此之外还有若干有趣的方向,如Visualization (可视化) 、Virtual Reality (虚拟现实) 、Multimeia (多媒体) 、Mobile Computing (移动计算) 、Distribute Computing (分布式计算) 、Management information system (这个之前也发过专栏的,感兴趣的可以去看) 、Quantum Computing (量子计算) 等等。当有的学校有这些方向的专家时或者是在这个交叉方向的交叉学科比较强的时候,也会单独开出这些方向供大家选择。
需要注意的是,申请人少的方向不一定就比竞争激烈的方向容易申,因为学校的招生人数也是有配比的,比如这个学校AI方向的老师非常多,所以AI方向的招生人数也会比其他冷门方向多很多。所以还需要分析学校的招生情况 (可以看各方向的教授、学生人数和背景) ,来决定自己到底主申哪些学校和方向,一些招国际学生非常少的方向需要慎重考虑。
第三部分:
北美学校CS排名和申请分析
在申请的时候,排名也是非常重要的依据之一。对CS专业而言,专排的价值比综排要更高,不过综排也有一定的参考意义。USNEWS对美国国内学校的专业排名还是相对比较准确的, 其他排名如QS、ARWU等也都各有千秋,可以综合考量.
除此之外,CS rankings是众多的CS申请者都会借鉴的,是由UMASS的Emery Berger开发的,完全根据各个学校的Faculty在顶级会议的发表情况进行排名。对于PhD学生来说,更应该关注的是领域内老师的研究实力,因此csrankings.org的排名就具有非常大的指导意义。这个网站还有细致到各个方向的学校排名以及学校内各位老师的发表情况和链接,对申请选校和套磁都非常有帮助。
Profetcher也是一个分方向查看学校和老师排名的好工具,直接搜索方向的名称就可以看到学校的排名和老师的排名。
有些同学可能已经开始发愁了:这么多排名,这么多网站,这么多学校,还要分不同方向,怎么看得过来呢?
第四方面:
CS申请的基础要求,以及为什么要申CS
既然CS出国申请竞争这么激烈,那么达到什么样的条件才能申请到好学校呢?或者说,影响申请结果的都有哪些重要因素呢?
1. 院校专业背景:
一般而言,本科生和研究生都可以直接申请美国学校的Master或Ph.D.项目。院校而论,海本申请是最有优势的,大陆学校大概分几个档次,清北一档,往下是上海交大、浙大、南大、中科大等CS强校,能申到美国Top校CS Ph.D.的中国学生大多是来自这些学校的。如果是普通院校,只需要看看本校往届出国情况就可以知道自己的申请大概在一个什么位置了。
2. 专业方面:
如果你本来就是计算机科学与技术或软件工程等计算机相关的专业出身,那么直接申请CS就是匹配的;如果是跨专业申请,也要有一定的计算机基础,即上过计算机基础课程,如C语言、数据结构等,这些要求在学校官网上可以找到。
3. GPA:
对于硕士申请人来讲,大部分美国大学的最低GPA要求都是3.0(4分制),按国内百分之计算应该在平均分80分以上。对于Ph.D.申请人来讲,GPA最低要求一般为3.5,远远高于硕士的要求。根据学校的录取统计数据来看,CS专排TOP10的学校,录取的平均GPA大都在3.5以上,部分学校甚至达到了3.7。
4. 语言考试:
从官网要求来看,大部分学校的CS系对托福ibt分数的最低要求在80~90分,少数顶尖学校达到了100分。不过这只是最低要求,除非在其他方面有非常突出的成就,托福只达到最低分还是非常危险的。所以一般申请Top50学校还是应该考到90+,最好100+。Ph.D.因为大部分要做TA,对口语小分会有比较高的要求,所以申请PhD的同学口语最好有23+ (24+更稳) 。
大部分学校是接受雅思代替托福申请的,通常要求达到6.5分以上,一些学校会要求7以上,小分一般不低于6分。
学校官网写的GRE要求对中国学生而言,Quantitative的线过低,Verbal和Writing的线过高,这是因为美国人也要考GRE,不用太担心。一般考到320,Verbal 150+,Writing 3.0+就算是过关了 (Quantitative尽量满分吧,对大家来说很容易的) ,315+申请MS成功的例子也不少,GRE对CS申请者而言并不是那么的重要。不过有能力的话还是尽量考高点,尤其是热门学校的申请,可能会通过卡三维来刷人,大家GPA和托福都差不多,GRE要是能有330+也很有说服力的~
5. 科研&实习:
对Ph.D.申请者而言,科研是非常重要的一环,如果作为本科生能有publication就很加分了;作为研究生,就要比拼publication的质量和数量。申请的时候最好申请和自己原本的科研一致的方向,因为只有这个方向的老师才理解你做的东西,对你的研究感兴趣,如果跨方向申请的话,科研的帮助就会打折扣 (不过如果你套的导师对你的经历和能力感兴趣,一样能行) 。
对MS (非research-oriente) 申请者而言,实习和实践经历也是很重要的,毕竟CS是一门看重实践的学科。如果有在大型企业实习的经历,将会有比较大的优势,至少也应该参加一些校内外的编程项目/比赛,代码的质量越高越好,这里推荐Kaggle。
6. 推荐信:
越是申请顶尖的学校,推荐信越重要,,特别是对Ph.D.申请者而言,一封牛推有时比一篇paper还有用,毕竟谁不想招个靠谱的学生干活
以上的几个方面都是越早准备越好,准备得越充分越好。至于文书、套磁等因素,都是实操的事情了,在这里就不详细说啦,感兴趣的移步下面两篇经验文,都会有详细的说明。
其实在解决这些问题之前,还有一个环节很重要,就是—心理准备。因为出国留学是一件足以改变人生方向、影响整个家庭的大事。在如今转CS的热潮之中,很多人未经了解和评估,盲目跟风学习CS,学习之后才发现自己不喜欢/不适合。所以,想要申请,就要先搞清楚为什么要申请。特别是申请Ph.D.的小伙伴要思考下,国外的学术氛围是不是吸引你,哪个国家是你的首选,同时是不是真心喜欢做科研。,希望大家在申请之前有充分的理由和动力,知道自己为什么要申请CS,为什么要去XX国家,到底要申请MS还是Ph.D.项目,等等。
最后,不管你申请哪个学校,哪个项目,都一定要明确自己的目标和计划,不要人云亦云,也不要盲目跟风,要在真正了解和喜欢的前提下去申请,并且认真准备。
北京站
客服专线: 400-010-8000
服务专线: 400-010-8000
北京分公司:北京市朝阳区 建国门外大街永安东里甲3号院B座
友情链接 · 美国留学 | 英国留学 | 澳大利亚留学 | 加拿大留学 | 新西兰留学 | 日本留学 | 欧洲留学 | USA:A Study Destination
©2025金吉列出国留学咨询服务有限公司 版权所有 | 京ICP备05010035号 | 京公网安备11010502038474号 | 出版物经营许可:新出发京零字第朝190057号
信息提交成功!稍后将有专人与您联系。