计算机科学下载资料

计算机科学和软件工程从业人员经常自嘲为码农,但事实上,他们是一群受过高等教育、具有严谨的逻辑思维体系、精通编程语言与算法设计的“高薪阶层”。计算机科学也不仅仅是学习如何写代码,他们是提高人类生产效率的工程师,推进者人工智能与大数据的发展……

什么是Computer Science

尽管大家习惯性地把计算机学科称为CS,但是从人才培养目标的角度而言,我们通常认为,计算机学科可以分成计算机工程(computer engineering)和计算机科学(computer science)两部分。

计算机工程方向的教学内容,通常倾向于培养学生工程项目方面的动手能力,偏重于程序设计语言的学习、软件工程的实践等等。其培养目的在于尽量拓宽学生在工具应用层面的眼界,让学生能够熟练掌握多种业界主流的开发工具和开发模型。


计算机科学方向的教学内容比较偏向理论,其培养目的,是教会学生基于数学和哲学,利用计算机作为工具,对一些问题进行建模求解。所以这也要求学生具备扎实的线性代数、离散数学、形式逻辑、统计学等扎实的数学基础。这些问题有可能是生活中可以见到的应用型问题,比如研究如何准确地使用计算机算法对人脸进行识别,或使用计算机算法与人类棋手对弈,对这类问题的研究称为应用型基础研究;被研究的问题也有可能是纯理论问题,比如研究基如何通过蒙特卡洛方法对深度学习网络进行剪枝优化等等,这类研究的方向比较抽象,通常被称为理论型基础研究。我们一般认为,理论型研究是应用型研究的基础和工具。

计算机工程通常是计算机系本科生和部分硕士研究生的培养方向学习范畴。而部分硕士研究生(尤其是M.Phil)和绝大多数博士研究生(Ph.D)都在从事计算机科学方面的研究。

本科培养体系

在本科阶段,培养计划的目的在于引领学生对计算机领域进行广泛但并不深入的了解,课程大致可以分为几类:

计算机是什么:计算机科学导论,操作系统,编译原理,计算机体系结构,数据库基础,网络导论,数字电子电路,等。

开发工具和开发模型:面向过程程序设计(C语言),面向对象程序设计(C++,JavaPython),汇编语言,软件工程导论,网络工程导论等。

攻读更高层次学位时可能用到的数学基础:线性代数,概率与统计,离散数学,随机过程,积分变换,等。

除此之外,本科培养体系里的专业选修课程会接触到一些细分领域的入门课程,如机器学习,人工智能,网络安全,管理信息系统等。


研究生培养体系

通常在硕士阶段,学生开始接触到比较实际的计算机科学专业方向,这通常取决于导师自己的方向。但由于硕士培养周期较短,对专业方向的涉及也常常比较浅显,硕士毕业生通常的状态是“具备比较扎实的计算机工程基础,已经开始接触计算机科学问题。

到了博士阶段,学生的主要任务就是挑选一个计算机科学的细分方向进行深入研究,直至斩获该细分方向的突破性进展才能够毕业。计算机科学的研究方向互相交叉,很难给出一个科学的分类图谱,我们这里列出一些常见的研究方向及组合:


细分方向:人工智能

人工智能又称Artificial Intelligence,通过创造出一个数学模型,用训练的方式使其自我进化,继而能够正确处理其并未遇到的问题。这个用数学模型模拟出的过程(学习-思考-推理)与人类脑部工作机理相似,故称为人工智能。人工智能的实现方式和相关学派很多,例如基于统计的学习方法,神经网络等。人工智能是一种基础研究,其成果可供大部分应用研究使用。例如,卷积神经网络(CNN)就是一种基于神经网络的人工智能模型,如何创建卷积神经网络是人工智能研究的范畴,而如何对CNN进行合理应用甚至加以改造以解决实际问题,是应用型研究(如图像处理)的范畴。从就业的角度而言,人工智能也是一个炙手可热的方向,一般来说人工智能的细分方向又包括以下三个方面:

数字图像处理:传统意义上的图像处理,通常是指对数字图像进行处理,以便于提取出其中有价值的部分。早期图像处理的研究常局限于如何通过色彩空间中的变换进行预处理,继而对轮廓,纹理进行提取,或对ROIregion of interesting)进行分割(业界曾认为图像变换、增强及分割是图像处理的三大主要任务)。其目的在于为后继工作,如物体识别等,提供精准的素材(特征)。随着人工智能的发展,图像处理的研究热点逐渐变成了人工智能在图像领域的应用研究。例如,使用生成对抗网络(GAN)对图像进行补全等。近年来,由于数字照片的普及,人们对于图像处理的需求愈发强烈,相机厂商及手机厂商,甚至一些世俗化的图像处理APP(美图秀秀等)均大量招入图像处理类研究生,以改善其产品的拍照及后期处理质量。

模式识别(PR:通俗一点来说,模式识别的研究任务,就是回答“这是个什么东西?“。即,使用前处理(如图像处理或自然语言处理)得到的特征,对特征所对应的实例进行分类(识别)。模式识别在日常生活中的应用及其广泛,从图像类的生物特征识别(人脸、指纹、虹膜、步态识别)、图像内容识别(google photo,车辆自动驾驶)到语音类的命令词识别(智能家居)、听写(自动会议记录),都要使用模式识别的方法。模式识别与人工智能在研究方向上紧密相关,大量的人工智能研究者会选择模式识别问题作为其研究方向的应用背景。

自然语言处理(NLP):自然语言处理是人工智能和语言学的交叉方向,也可以看作一种模式识别问题。其一般使用人工智能的理论基础,模拟人脑对人类语言的理解和生成。自动翻译、自动应答机器人等是NLP的典型应用。

人工智能方向如果按research topic来说的话,覆盖的研究话题主要有:

  •         Learning and Probabilistic Inference (深度学习与概率推断):

            Graphical models. Kernel methods. Nonparametric Bayesian methods. Reinforcement learning. Problem solving, decisions, and games.

  •         Knowledge Representation and Reasoning (知识表示与推理):

            First order probabilistic logics. Symbolic algebra.

  •         Search and Information Retrieval (搜索与信息检索):

            Collaborative filtering. Information extraction. Image and video search. Intelligent information systems.

  •         Speech and Language (语言识别与自然语言处理):

            Parsing. Machine translation. Speech Recognition. Context Modeling. Dialog Systems.

  •         Vision (计算机视觉):

            Object Recognition. Scene Understanding. Human Activity Recognition. Active Vision. Grouping and Figure-Ground. Visual Data Mining.

  •         Robotics (机器人与自动驾驶):

            Motion Planning, Computational Geometry. Computer assisted surgical and medical analysis, planning, and monitoring. Unmanned Air Vehicles


细分方向:信息安全

信息安全(Information Security,Cybersecurity)主要对加密算法、安全协议以及从网络安全或漏洞扫描等工程问题中抽象出的理论进行研究,近几年,也有相当的研究者将人工智能引入信息安全领域。随着信息化的进程,信息安全作为一项基础服务也受到了业界的关注,但目前仅限于漏洞扫描和入侵检测领域。所以业界普遍认为信息安全行业具有良好的发展前景,其研究领域包括:

  •         Cryptography (密码学)

           Complexity-theoretic approaches to cryptography, development of new cryptographic systems, cryptanalysis, protocol development, applied cryptography, quantum computation, and applications that include electronic commerce, electronic voting, wireless communications, and protocols for sensor webs.

  •         Privacy (隐私安全)

            Privacy in wireless sensor webs, privacy in RFID systems, privacy issues in databases, privacy in web based applications.

  •         Security, programming languages, and software engineering (软件安全)

           The interaction between programming languages and computer security -- an area often called "software security."

  •         Network security  (网络安全)

            High-performance network security monitoring and intrusion prevention. 


其他细分方向

人机交互(Human-Computer Interaction

语境感知计算(Context-aware Computing):活动分析,智能空间,位置感知系统,隐私技术;感知界面(Perceptual Interfaces):基于视觉的界面,语音和话语界面;协作和学习(Collaboration and Learning):基于模式的创作工具,ESL(英语作为第二语言)学习,小组协作技术,包括地理上分布式的远程沉浸式协作;验光和人类视觉模拟(Optometry and Human Vision Simulation):计算机辅助角膜建模和可视化,医学成像,手术模拟的虚拟环境,视觉逼真的渲染等等。

计算机架构与工程(Computer Architecture and Engineering)
研究解决计算机体系结构中的下一代问题,以解决并行计算的巨大挑战,引入其他领域的技术(例如,用于高影响优化的机器学习),基于新型基板的架构思想,功率预算问题,微架构电路水平问题,以及传感器网络发展中的架构问题。

计算生物学(Computational Biology)

生物数据集的规模和范围空前增长,包括多物种基因组数据,多态变体数据库,蛋白质结构和RNA结构数据库,基因表达数据,大规模基因敲除实验的生化测量和生物医学数据。电路设计和纳米技术的想法在新的生物传感器和执行器的设计中发挥着关键作用。表示,操纵和整合这些数据需要集合大量的计算机领域的知识,例如数据库,算法,人工智能,图形,信号处理和图像处理。对产生此类数据的潜在现象的推理需要系统级思维,这也是控制理论,信息理论和统计机器学习等领域的基础。

控制、智能系统与机器人(Control,Intelligence System and Robotics)

控制和机器人技术关注的是建模系统和机器的一般问题,然后使它们对输入作出适当的响应。 特别是当目标系统在规模上增长时,优化和数学技术起着关键作用。 控制范围从半导体过程控制,混合和网络控制到非线性和学习控制,所以这个领域结合了机械工程,生物学和计算机的交叉。机器人技术被广泛地解释为包括从毫米级移动机器人到3米转子跨度直升机的移动自动系统,用于组装的固定自治系统,以及诸如远程呈现和虚拟现实的人类增强能力。 为机器人提供图像理解能力,以及利用计算机视觉来辅助人类,是当前关键研究领域之一。

通信与网络(Communication and Network)

研究涵盖理论,模拟,仿真和实施。信息论,编码论,博弈论,控制论,统计学,数据分析和大系统渐近性的技术起着突出的作用。关心的问题包括数据中心,点对点计算,边缘计划,社交网络,无线网络控制及其需求,例如隐私和安全,激励和机制设计。研究活动还涉及系统生物学,DNA和RNA序列重建以及MRI。在大规模部署通信基础设施时,信息理论,网络,数据压缩,编码和多用户通信以及算法和协议设计以及系统范围政策考虑等一些核心问题的基础工作都是研究的核心。

其他 

除此之外,还有Cyber-Physical Systems and Design Automation (网络物理系统和设计自动化) ,Database Management Systems (数据库管理系统),Graphics (计算机图形学) ,Scientific Computing (科学计算) ,Signal Processing (信号处理),Theory (计算理论与复杂度科学)。

选校建议

很多申请者在申请选校的时候,都依赖于US NEWS的排名,或者QS的排名。但是这些排名,一般都由学术声誉、论文数量、论文引用、会议论文和书籍出版、国际化程度等指标来衡量,对CS专业其实不很适用。

CS的研究,很多时候都是在抢热点,看谁做得更快,因此很多重要的科研成果都是发表在会议论文上,而US NEWS对于会议论文的权重只有可怜的2.5%,而学术声誉等指标又过于主观,因此这些排名参考意义不大也就情有可原了。

因此我们一般推荐更适合CS专业的  CS Rankings 排名,一般来说,CMU,MIT,Stanford,UC Berkeley美国大学里毫无疑问的CS巨头,不管是理论研究还是应用领域,都是引领世界潮流的。

当然,排名也仅仅是一个参考,我们建议申请者不要过于纠结排名的细微区别。比如蒙特利尔的大学,即使是在  CS Rankings 里也仅仅是排名加拿大第7,但是在深度学习和人工智能领域,Yoshua Bengio教授可谓大名鼎鼎。由于在神经网络研究领域作出的重要贡献,Hinton教授、LeCun教授以及Bengio教授三人成功获得2019年图灵奖。如果能成为Bengio教授的学生,即使蒙特利尔大学排名不好看,又有谁在乎呢,或者说这个排名又怎么科学呢?

选校不仅仅是看排名,还有地理位置,项目特色, 学校声誉,业界合作,师生比,留学成本等等。 如果想在学术圈发展,导师的业界地位最重要。如果能拜在图灵奖得主门下,学校声誉、专业排名,都可以忽略。这里说的业界地位,最起码也要是IEEE Fellow级别的。因为这样的导师,推荐信才有分量。 如果想毕业之后去公司,那么学校名气>导师地位>专业排名。毕竟HR不是学术圈里的人,一个妇孺皆知的校名比什么都好使。此外,导师的业界地位和人脉也很重要。

现在很多申请者去美国读计算机的硕士,目标都很明确,就是去Amazon,Facebook,Microsoft这样的大公司,或者硅谷的明星start-up。因此有些人对地理位置看得很重,认为加州的项目就一定比其他地方好,其实不尽然。因为CS硕士毕业生,通常的就业岗位是Software Development Engineer或者Data Scientist,说实话只要学校能让你过了简历筛选,基本上学校的title就没那么重要了。剩下的比拼就是科研和项目经历,编程基本功与技能,应付笔试(刷题)和面试的能力了。至于地理位置,很多大公司都有资金实力在全美范围里招聘的,即使你在UIUC大农村,或者Wisconsin,一样会有HR主动上门来做hiring event。因此对于地理位置一般的学校,也不应该排斥。地理位置的优势可能会让你对于业界的信息资讯更为通畅,感受到的创业氛围更加浓厚,除此之外,顶多是找实习的时候,让你少搬家几次罢了。

因此申请学校就是能多申尽量多申。因为就和投资一样,申请某个学校的不确定性是很大的,现在的 CS 项目申请者数量极大,很难保证每个人的材料都被认认真真看过。而如果我们不把鸡蛋放在一个篮子里,用各种投资组合进行风险对冲,就能很大程度的缩小方差、减少风险,从而获得和自己实力匹配的 offer。 对于 PhD 学生来说,我觉得你的导师水平和你学校在你科研小方向的实力非常重要,比 CS 专排重要的多,因为你真正的专业其实是你研究的小方向,而不是 CS。看小方向的实力应该去看你的领域顶会 paper 的数量和质量,毕竟 PhD 以 发 paper 为生。而看导师,除了看中 H-index,也要看他的人品以及在学术圈和业界的人脉和口碑,这和你今后的发展高度相关。另外,学校的综合排名(名气)也是非常重要的,今后假如要创业或者回国当青千,别人通常只大致知道综合排名 (除了 CMU 这种 CS 特别有名的),这也是为什么哈佛的 CS 会比 GaTech, UTAustin 要难申。而对于 Master 来说这些排名都不大重要了,重要的是你申请的项目的质量和就业情况。例如,综排很高的学校会有那种一年的MEng,这种项目时间太短就很难找到好的工作。还有, CMU 虽然是 CS 第一强校,但因为整个学校有非常多的计算机相关学院,找工作时内耗很大,找工作时有优势的也就是和 CS 高度相关的 Master 项目(机器学习,语言技术研究,计算数据科学,计算机科学等),其他有的还不如一些 Top20 学校 的 MSCS。


根正苗红的CS项目:NEU

对于计算机系本科的申请者来说,纯CS项目一般都是首选,比如美国东北大学(NEU)的CS硕士项目就很受中国学生欢迎。东北大学位于波士顿,地理位置毋庸置疑,其CS硕士生就业数据也非常不错,业界口碑也很好。毕业生起薪通常在10万美元左右,就职的岗位包括Amazon的软件开发工程师,德勤的咨询师,微软的软件工程师和全栈工程师等。

从课程设置上来说,学生需要修3门必修课,课程涵盖程序设计理论,软件开发管理或计算机系统,以及算法理论。

同时,学生需要在人工智能,人机交互,数据科学,游戏设计,计算机图形学,信息安全,计算机网络,编程语言,软件工程,计算机系统以及计算机理论中,选择一个领域作为specialization。同时,选课也是非常自由的,对于5门选修课的要求,只要求在specialization的领域里选至少2门,其余的课程没有限制。

人工智能的track,可以选的课有:人工智能基础,机器人科学与系统,自然语言处理,机器学习,高级机器学习等。

数据科学的track的课程包括:数据管理系统,机器学习,信息存储,数据挖掘技术,大规模并行数据处理,数据管理,数据科学,数据可视化等。

游戏设计的track包括:游戏人工智能,计算机图形学,人机交互,游戏引擎开发,高级机器学习等。

信息安全的track课程包括:软件安全,网络安全,密码学与通信安全,隐私安全与可用性,软件工程,密码学基础等。

完成课业任务之后,学生还可以做6-8个月的co-op实习,以及3-4个月的暑期实习,对未来找工作也是帮助非常大的。同时,NEU还为非计算机背景的申请者设置了Align的桥梁课程,让转CS的同学可以有2个学期的时间来补一些计算机的基础,可以说,这对转专业申请CS的同学来说,考虑得算是非常周到了。



工科转CS:Duke ECE

杜克大学的Master of Science in Electrical and Computer Engineering是比较常见的工科学生转CS的项目,课程一共有4个方向,包括:计算机工程,信号与信息处理(大数据分析方向),工程物理,微电子与纳米材料。这是个很flexible的项目,也就是说即使你入学的时候背景是微电子相关的,一样可以选择计算机工程来作为你的硕士方向。这个项目一般两年可以读完,可以选择纯修课(coursework only),做project或者做thesis来毕业。每年招生规模在120人左右,中国学生比例较高。

对于计算机工程方向,可以选择软件开发或者硬件设计两个方向。对于毕业相从事Software Development Engineer(码农)的同学来说,选择软件开发方向就行了,课程架构包括编程基础,软件工程和计算机系统基础,还有分布式系统,iOS开发,存储架构,云计算等比较实用的课程。

ECE 551:是关于编程、数据结构、算法以及C++实现的课程,要求在Linux系统下用emacs写代码交作业,实现Makefile编译,gdb调试,valgrind查内存泄漏等等。教材是Duke的Drew Hilton教授自己写的《All of programming》,基本上面试中会碰到的编程问题都会在这本书里找到对应的知识点,如heap实现,哈希表实现,C++的虚函数的实现,编译基本过程,sort排序等等。

ECE 550:和ECE 551一样,这也是软件工程的基础课,主要关于计算机系统与工程的入门知识。这门课从基本的电路的基础到后面讲cache的实现,MIPS语句,Datapath,指令,操作系统等等,基本是计算机里面的硬件实现,虽然内容多也杂,但感觉作为一个没学过操作系统和计算机组成的人来说还是很有收获的。

ECE 650:主要关于系统编程,内容涵盖计算机网络、并发、进程线程、操作系统、数据库等等。其中比较详细的讲了计算机网络和操作系统。project也非常偏向应用,包括线程安全地实现malloc函数,基于socket编程的HOT POTATO游戏,C++里用postgresql增删改查数据库,最后修改Linux的kernel以实现几个攻击内核的函数。 

ECE 651:主要关于软件工程的基础知识,老师会安排实际的项目来分组,(安卓组,后端组,前端组)基于agile 的开发模式让大家给客户开发软件。可以了解到各种开发模式的区别,熟练Java开发,包括需要写一些requirement,architecture文档等等,以及真正完成一项可以使用的软件。




数据科学家第一步:USC Applied Data Science

随着数据科学(Data Science)越来越火热,很多北美的CS院系也开始开设新的数据科学硕士项目。南加州大学(USC)的应用数据科学硕士项目前身为Master of Science in Data Informatics,而且这个项目也可以用来做OPT的STEM extension。项目主要培养学生数据管理,数据可视化,数据挖掘,人工智能与机器学习的知识,以及大数据的基础架构(Hadoop和Spark)的应用和解决实际问题的能力。灵活的课程设置也能让学生有选择性地规划自己的学业,为留美找工作做好准备。

该项目培养计划要求学生修读32学分的课程(8门课),其中6门必修课包括:

INF 510:Principe of Programming for Informatics,即编程原理,包括利用Python存储,抓取和分析web数据,熟悉如何对大数据集进行操作和管理,以及简单的Java编程入门。对于Python编程能力出色的同学,可以申请免修这门课,换一门对应的选修课。

INF 552:Foundation and Application of Data Mining,即数据挖掘的基础与应用,主要侧重于map-reduce 架构的运用,同时结合数据挖掘算法来处理实际应用中的大数据情形。

除了这些必修课以外,还需要选择一门用户界面开发或者可视化的课程,同时还有其他方向的课程可以自由选择,包括应用自然语言处理,高级数据存储,算法分析,网络搜索引擎与信息存储,大数据里的隐私与安全,知识图谱的构建等等。虽然这个项目时间紧凑,很多学生在第二学期就拿到了实习,毕业之后的就业率也算不错,不少同学都最终成为了一名传说中的Data Scientist!




数学背景+编程能力

正处在风口上的计算机科学,留学申请的难度越来越大。不仅有数学统计物理的同学想转行做CS,就连传统的社科类专业,比如经济学、政治学、 新闻学、社会学的人都有申请CS项目的。 一般来说CS的master比较强调申请者的编程能力和项目经历(甚至GitHub上star的多少)。同时,数学背景,比如数学分析,线性代数,数理统计等课程的成绩也是很看重的一方面,相比之下GPA比GRE托福等Standard Score重要得多。 再者,美国CS华人faculty比例相当大,一般来说国内的老师也跟北美CS的学术圈有紧密的联系,能拿到靠谱的推荐信为申请结果提升不少。除了推荐信,项目经历和研究经历,如果能在文书材料中适当地展示出申请者的学术潜力,突出科研经历与项目经历,对申请结果会有出其不意的效果。对于跨专业的申请者,在Coursera等公开课平台上修读一些编程和计算机理论的基础课,也能弥补一些跨专业申请的障碍。


背景提升+套辞

美国CS的申请中,套辞的作用是非常显著的,因为funding基本上是来自于professor自己的科研经费的,而且年轻的assistant professor需要大量的科研助手。当然,对于大牛校,比如哈佛大学或者CMU,他们的PhD项目都是给fellowship奖学金的,同时为了给学生自由选择导师的权利,也不会一开始就绑定导师,因此套磁的意义就不是很大。如果本科期间有去美国交流或者暑期研究的机会,可以多修课弥补国内课程设置的短板,刷高GPA,还有机会拿到内推,对申请结果是很大的提升。但是如果申请欧洲国家,或者澳洲的学校,套磁就更有决定性影响了。只要是研究型的项目(PhD/Mphil),导师都有决定要不要你的权利,甚至说你的奖学金很可能就是从导师自己的科研经费里来的。总的来说,不管是申请硕士还是PhD,有合适的海外交流机会的话更是不要错过。 如果有参加美国数学建模比赛、Kaggle平台上的比赛、以及商业公司举办的大数据分析比赛的经历,也会让申请者增色不少。另外,由于 PhD 申请水涨船高,原本很看中 GPA 和英语成绩的 master 也越来越看科研了, 这是 master 申请者需要注意的。


申请PhD:学校背景和科研经历很重要

北美CS不管是硕士还是PhD,里面中国学生的比例也相当高,而且负责招生的教授很多也是华人,他们对中国学校的情况非常了解,对名校背景非常看重。

每个学期的Summer都是教授们回国内开会,讲课,拿funding的季节,同时也会直接去清北复交科大等学校去找系主任要人。因此非名校背景的申请者非常吃亏。随着CS的竞争越来越激烈,名校背景往往意味着更扎实的基础知识。如果不是名校背景的同学,GPA保持在3.5以上,也可以取得不错的申请结果。一般来说,申请硕士的GPA不能低于3.2, 申请PhD不能低于3.5,再低就很难弥补了。

相对来说GRE的成绩差不多就行,比如Verbal 150+,Quantitative 170,aw 3.5,但是托福成绩的好坏就往往会影响到拿Teaching Assistant(奖学金)的机会。一般来说托福要考到100+,口语22+,才不会成为你的短板。但是CS科研经费充足,老师有足够的research assistant的岗位,只要托福过了学校的基准线,科研能力强的学生也能拿到全奖。因此,对于硬性指标不强的申请者,可以考虑抓住一些科研机会,多发审稿周期较快的会议论文(CS领域会议众多,可以参考中国计算机学会的推荐的:会议与期刊目录),在申请的时候有不错的publication会对申请者脱颖而出。同时,先申请一个硕士作为后续申请PhD的跳板,是非名校背景的申请者常用的策略。

关于PhD的录取标准,担任过CMU admission committee主席的Dave Andersen教授曾要求负责招生的老师:

Don't spend a lot of time reviewing the top 2% of applicants.  They're easy to identify, they get admitted everywhere, and the error rate is low.

Don't spend a lot of time reviewing the bottom 50% or differentiating among them.

Please focus your attention on finding the students who have the potential to be in the top 10% percent, but are likely to be overlooked by other top programs.

根据Andersen教授的标准,top 2%的申请者一般毕业于顶尖名校(MIT,哈佛,CMU,Stanford等),有知名期刊或者会议的publication,接近4.0的GPA,有熟知的教授的推荐信,PS展现了对专业领域的focus和motivation。虽然这个标准非常严苛,但是对于中国申请者来说,也可以大概了解到顶尖学校的选人标准,即使不能全部达标,努力往这上面靠就能最大程度地提高自己的录取概率。



申请PhD:套磁和暑期研究让你脱颖而出

学校背景+推荐信+数学背景+编程能力+科研活动经历+GPA+托福/雅思/GRE……

这些指标孰轻孰重,其实这个事情很难说,因为现在的申请形势是瞬息万变的,几年前的经验已经不太适用,例如前几年 MSRA(微软亚洲研究院 号称“全国第一留学中介”,去实习的学生大多 能收到很好的录取,但是今年明显已经完全不如去美国实验室做暑研了。而即使是 CS 的大方向每个小方向也完全不同,例如,机器学习方向由于申请者多如牛毛,而且一些会议质量有所下降,某些 A 类会议的一作论文并不能保证你申到 TOP30 的学校,而系统方向的顶会一作则基本让你前程无忧。况且不同学校要求也不同。所以最好的方法是和正在国外念书甚至任教的学长学姐联系,他们可能了解更多录取的内幕,另外要多和清北、美本的同学交流,他们往往有更好的信息来源。 当然,博世留学作为连接申请者和海外导师的桥梁,在这方面是做得非常专业的,众多CS大神在这里等你来预约。

对这些事情指标做个排序的话,牛推/内推 >> 顶 会 论 文 > 实 习 >GPA= 本 科 学 校 >>>TOEFL Speaking>GRE AW>TOEFL>GRE。当然,牛推和内推是可遇不可求的,申请者除了在暑期研究或者学术会议的时候去认识一些大牛教授,平时并没有很大的机会,这也是为什么海外本科优势更大的原因。尽管推荐信放在这么重要的位置,并不意味着后面几项就可以不下功夫了,而且在中国申请者这个pool里,这一项基本都可以忽略不计。例如一个得到了美国大牛教授强推的人,一定是和他合作发表了若干篇高水平论文,且经常用流利的英语和他谈笑风生,另外大牛之所以同意他来组里做科研,也是因为他在名校上学且有着很棒 GPA 和实习经历。所以这些变量都是强相关的,说推荐信重要是因为在审材料的时候非常看重推荐信,因为这往往反映了学生的综合实力。而且在多如牛毛的背景各异的申请者中,很难通过其他因素来快速判出高下。例如,南大的前 3 和清华的前 20 谁更好? 均分 90 的同学虽然只排十几名,但分数真的比 92 分的第一名差很多吗?这时候,人们就会倾向于相信自己认识的人和认识申请者的人。



申请硕士/PhD:时间规划

大一大二是最宝贵的大学时光,很大程度上决定了你留学申请的硬件:GPA。对于CS申请者来说,最好的规划是尽量在大一大二保持均分85左右,特别是CS的专业课,有精力和机会的话,还应当多修读一些数学课和统计课程。

如果是要去美国留学,大三就要开始准备托福和GRE了。特别是GRE考试要求的词汇量非常大,需要一个比较长的准备周期。 如果是去美国之外的国家留学,也要准备托福或者雅思的考试了。同时大三又是专业课最多的时候,时间规划非常重要。

大三暑假也是很重要的时间点,这是准备留学申请的冲刺阶段了。 如果语言成绩考试分数不够,要抓紧时间刷分。同时根据自我发展的规划,定好自己的意向学校,对照各项留学申请的要求,查漏补缺。 比如科研经历缺乏,比赛经历空白,或者还没有跟系里的老师深 接触过,推荐人还没确定......

大四一开始,申请季就来了,有的学校12月中旬就截止了。联系推荐人,准备文书材料(PS+CV),填写网申,英语成绩送分,准备套磁,邮寄书面材料,准备面试,办理签证,行前准备......如果没有充分的准备,你将手忙脚乱。

学科前景

每天都有人惊呼互联网改变生活,事实上互联网科技公司也在逐步传统经济。当今市值超过5000亿美元的公司,有谷歌的母公司(Alphabet),微软,亚马逊,腾讯,Facebook,阿里巴巴等,今日头条等新兴科技公司发展势头也不容小觑。这些高科技公司每年创造者数以万计的工作岗位,使得Computer Science成为现今最为火热,前景最好的学科之一。


从就业的角度而言,计算机工程方向的学生的对口就业职位是软件工程师,即人们所常说的“程序员”。基于不同的细分方向,和个人对于不同工具的熟练程度,可能分成前端工程师、后端工程师、数据库工程师、算法工程师等等。其主要职责在于基于设计文档,利用某种特定开发工具,将设计思想实现为产品。随着工作年限的增加,软件工程师可能进阶成为高级工程师、系统分析师、系统架构师等,也有相当部分的工程师在晋升过程中转为技术管理岗,即研发经理、产品经理、售前(方案)工程师等等。

在传统意义上,由于计算机科学方向的毕业生以研究生居多,故科研院所(国家科研机构或公司下设的研究院)和高等院校是这类学生的一个主要去处。特别地,由于大学里教席通常有限,进入大专院校前有可能需要做一期博士后,以进行更深入的科研训练。然而,近年来,随着人工智能称为社会热点,业界开始意识到理论研究可以成为公司经济效益的增长点,于是对研究型人才的需求呈爆炸式增长,很多公司将研究和开发的概念进行融合,将算法的创新作为公司的主要竞争力。于是,我们可以看到各类从事人工智能领域的公司,都为研究型毕业生留有一席之地,并且薪资丰厚。


留美工作

相对于国内互联网公司的996甚至007的工作模式,北美的“码农”们享受着到点就打卡下班的福利。良好的work-life balance,完善的福利体系和10万美元起的年薪,让很多CS的同学毕业之后选择留在了美国,成为一个标准的美国中产阶级。一般来说,常见的岗位名称包括软件开发工程师(SDE),数据科学家(Data Scientist),机器学习家(Machine Learning Scientist),移动端工程师(Mobile Engineer),前端工程师(Front-end Engineer),产品经理(Product Manager)等。举例来说,SDE是互联网公司需求量最大的岗位,每年Amazon,微软,谷歌等高科技公司都会招聘成千上万的工程师。一般这些互联网公司都集中在西雅图或者加州的湾区,起薪范围在14万美元左右。拿Amazon来说,SDE 1的起薪为14万美元左右,股票价值10万美元左右(分四年给),再加上4万美元左右的签字费和1万美元左右的签字费。特别优秀的可以拿到SDE 2的待遇,基本上在SDE 1的标准上可以上浮10%-20%。在积累几年经验之后,跳槽之后拿到20万美元年薪的也不在少数,回国拿到50-100万人民币年薪的也非常多。

现阶段正是美国经济复苏的好时期,留学生毕业后有很多的工作机会,尤其以CS专业最为火爆。不论是硅谷/西雅图还是华尔街,软件、互联网、金融公司给CS专业毕业生的薪资水平连续两年超过10%的增长,加上灵活的工作签证和绿卡制度,吸引着许多同学转专业学CS,加入到求职大军中来。一般来说,大家欲通过面试进入科技公司,需要先投简历拿到电话/校园面试。一到三轮电话/校园面试之后表现合格的,公司会买机票邀请到总部进行Onsite面试,再进行四到七轮面对面的廝杀之后,就有机会拿到Offer。第一步拿到面试,需要有比较过硬的简历,并且找到和自己的背景对口的职位,如果有相关实习经历会非常有帮助。拿到面试之后,就要想办法搞定面试官了。一般来说面试内容分三类:个人背景 (之前的项目经验和专长)、知识题和代码题。Master的同学们会有更多的代码题,PhD 同学们会被问到比较多的科研内容。个人背景的提问很好准备,根据自己之前的经历,画出四乘四的表格,写出简历上的三到四个项(实习、科研、大研等),在表格中填好每段经历的四个问题:“遇到了什么困难,怎样克服”、“有趣、最闪光的点”、“掌握了什么技术”以及“如何体现了团队精神”,把这个表格牢记在心即可。知识题一般是考察对基本概念的熟悉程度和CS背景是否扎实,金融公司喜欢问一些C++相关的,互联网公司可能会问一些大规模/多用户应用相关的。代码题是最后决定性的一环,需要花一些时间好好准备,熟悉常见的数据结构和算法。 —般来说,45分钟的面试,要在白板或者在线文档里写出两道中等难度的算法题,做出最低的时间和空间复杂度,没有Bug,就算合格。《Cracking the Coding Interview》、《算法导论》和 leetcode.com 都会很有帮助。有了足够的练习,先问清楚题目,然后向面试官简单描述自己的解法,如果对方觉得可行,就高速高质地把code写好,边写边和面试官交流,最后把结果做出来。

可以说,这是Computer Science最好的年代,互联网+的繁荣和产业资本的推动,改变了每个人的生活,也改变了很多中国学生的命运。如果你也想留学北美学习CS,加入这些耳熟能详的互联网巨头,就赶紧预约博世留学的各位CS大神导师吧。

客服微信号


咨询