01 人工智能
人工智能——CS最热门,最有发展前景的分支方向之一,目前美国CS专排TOP50的院校中只有16所院校未开设AI的分支方向,但是这16所院校开设的均有AI的子方向例如Machine Learning、Computer Vision。
顶尖的院校AI方向学习的课程主要是围绕以下几个方面:
★ Machine Learning;
★ Computer Vision;
★ Planning, Learning and Execution;
★ Natural Language Processing;
★ Robotics。
那么,申请AI方向需要申请者具备什么样的背景:
(1)对Optimization有着初步的了解,它是学习AI的必要前提。优化就是整个AI的方向,不论是哪个方面,归根到底就是复杂的问题进行抽象和简化,转化成优化问题来求解。
(2)有一定统计的知识,做人工智能所用到的基本的数学工具均以统计为基础。例如regression and classification,这是统计课里面会教的两个内容。
(3)对神经网络有一定的了解,作为目前Machine Learning最热门的内容,对数学方面的基础要求并不高深,可以翻阅相关书籍对此有着初步的认知。
(4)掌握一定的控制理论知识,控制理论是工程学与数学的跨领域分支,在AI的子方向Robotics ,会用到大量的相关方面的知识,所以如果学生想要未来学习Robotics,需要学生在控制理论方面有一定的基础。
AI这么火热的原因在于它的应用范围极广,涵盖了商业分析,自动驾驶,健康等领域,并且http://Indeed.com显示,从2013年以来,需人工智能技术的招聘信息增加了4.5倍,所以在近几年完全不用担心之后的就业。
02 软件工程
据美国劳工部统计局数据显示,17年5月Software Developers的薪酬已经达到$103,560 per year,相比其他工作,这一薪酬极具诱惑力。
在未来10年,Software Developers这一职位就业率预计有24%的增长,远超于所有行业就业率增长的平均速度,这也就造成了CS的分支方向之一——Software Engineering备受欢迎。
Software Engineering的主体思想如下:
★ 一是进行软件需求的引出、分析、规范、验证;
★ 二是进行软件架构设计;
★ 三是实现软件;
★ 四是进行软件测试和维护,保证产品的质量以及后期运营。
明确了Software Engineering的思想,我们就清楚了申请Software Engineering需要具备什么技能。
(1)良好的书面表达能力,在进行软件需求的引出,分析等工作时,需要具备将客户的需求清晰的展现出来的技能。
(2)熟悉各种Design Patterns,进行软件架构设计,前提就是对各种设计模式有一定的掌握。
(3)掌握主流语言的编程能力,实现一个软件离不开代码的支持,这就需要你能熟练运用C++, Java, Python等编程语言。
这些技能的掌握除了学习相关的课程加以运用,还有一个比较有效的办法,就是找实习。因为SoftwareEngineering非常强调实践,如果有机会能在国际知名互联网公司实习,那么你竞争优势就大大增加了。
美国院校Master期间Software Engineering方向学习的主要课程有:
★ Programming Languages
★ Data Structures and Algorithms for Engineers
★ Advanced topics in object-oriented design
★ Advanced Compiling Techniques
Software Engineering方向的学生毕业之后就业很容易,主要分成两个大的分支,一个是软件工程师,另一个方向是测试工程师,美国劳工部统计局是把他们统一归类为了Software Developers。