计算机科学 Computer Science(CS)主要研究计算机理论基础及其运用,理论性更强,属于理科。一般开设在文理学院、工学院、计算机学院下,偏向软件编程。
CS的研究领域更广,下设许多分支。 E.g. 软件工程、数据库、计算机网络、人工智能、计算机图形学和多媒体、体系结构/编译器和并行计算、人机交互、管理信息系统、信息安全、理论和算法。
计算机工程 Computer Engineering(CE)就是研究计算机如何运作并且做到更快捷更精准,主要包括计算机软件与硬件工程两方面。CE大多设置在工学院,偏向硬件,而且与电气工程(EE)专业联系紧密,有的学校甚至将两个专业合并在一起学习。 E.g. 体系结构、嵌入式
CS研究的课题
1、计算机程序能做什么和不能做什么 (可计算性) 2、如何使程序更高效的执行特定任务 (算法和复杂性理论) 3、程序如何存取不同类型的数据 (数据结构和数据库) 4、程序如何显得更具有智能 (人工智能) 5、人类如何与程序沟通 (人机互动和人机界面)
CS 更侧重于计算机的理论研究,包括运算能力,算法、数据结构、人工智能、人机互动和人机界面等。
CE 侧重于应用方面的研究
在美国计算机工程(CE)与计算机科学(CS)分属两个不同的学科,它们既有相互交叉的课程,又有各自独立的研究和发展方向,美国各高校也有各自的强项。
学生选择专业时,必须充分了解各学科的特点、自己的兴趣所在以及对未来就业与职业规划的志向。
EE/CE 和 CS的区别:
EE/CE是属于物理层面偏硬件,CS是物理层偏软件。
凡是跟芯片有关系的,E.g. Intel、美国超微半导体公司(AMD,Advanced Micro Devices 、德州仪器,都是偏硬件; 凡是跟软件关系大的, E.g. 微软、甲骨文、金山,都是偏软件的;
软硬结合,还有一些是做产品和集成的,比如说NOKIA,华为之类,是典型的软硬兼修,并不偏向哪一个,因为他们的产品离开了硬件软件都不行。
专业方向:
1. 软件工程 Software Engineering 大体上分成软件设计、编程语言和软件测试。包括需求分析、结构设计、开发流程、生命周期等等相关内容全部在关注范围。计算机专业的基础学科如操作系统、数据结构和算法全部包含。此方向几乎属于CS第一大的方向了,录取名额很多,奖学金也有一些。问题的关键是,这个专业是培养coder的,而计算机专业的从业者大部分就是coder。因此学这个专业就业机会多,但是起步阶段的收入居于中等。
2. 人工智能与机器学习 Artificial Intelligence and Machine Learning 人工智能其实是很综合的学科,他的目的就是把人类的智能扩展到信息处理的机器的上。人工智能里面涵盖了计算机专业的很多小方向。比如机器学习系统,计算机语言,图像处理,语音识别,机器人,人机交互等等。对于申请者的计算机科学背景要求较高,包括数据结构算法之类纯计算机专业的课程,都有一定要求。人工智能的产品包括机器人、语言识别、图像识别、自然语言处理和专家系统等。这个方向较 近很热,招收的名额也比较多,也有从主要招收PhD向Master转移的趋势。完全对口的工作是纯研发的性质,找起来有一些难度,不过退一步海阔天空,在各类电子设备商处都有大批学习此类专业可以涉足的工作。 唯一需要注意的是AI的某些部分在美国也一定程度上应用于国防,所以如果自己要进入的program涉及此类就不推荐了。
3. 管理信息系统 MIS本质上说就是一个数据库系统,它和其他数据库系统的不同就在于其目的用于整合必要的信息用于决策。决策支持系统、专家系统、执行信息系统等都是 MIS的组成部分。MIS专业还分成在工程学院或者商学院下面,近些年受到很多女孩子欢迎的专业。
4. 数据库和数据挖掘 Database and Data Mining 数据库方向具体又有数据库系统,数据挖掘等等。从很理论的关系数据库、云数据库,到很应用的SQL,全在学习范围之内。毕业生可以做数据库管理工程师。不过请注意这种工程师职位对于经验要求较高,尤其是高薪全职在大公司的数据库管理工程师,刚毕业的学生恐怕有困难。不过工作可以找到,比如说兼职的实习性质,可以作为起步。对于编程序要求不算太高,很多女孩子青睐这个方向。
5. 分布式系统和云计算 Distributed System and Cloud Computing 在这个充斥着“云”的时代,它始终代表信息生产力的发展需求!它始终代表信息技术的前进方向!它始终代表IT从业人士的较 根本利益! 你可以研发基于Cloud(云端)的图形处理,你可以有专属于Cloud的计算机架构,你可以应用分布式的NO-SQL数据库,你可以通过MapReduce(数据处理)技术来进行AI,ML,DM的各种高效运算,你可以开发及应用各种并行计算的软件。值得一提的是,区别于刚才提到的Software Engineering(软件工程),该方向不仅是工业界的宠儿,同时其也是较 热门的研究领域,无论你是Master还是Phd都选择这个方向的前景绝对是大大的。 “云界”有一句话叫做:只有你会出错,Cloud绝不会错。
6. 计算机网络 (包括通讯 Telecommunication ) 这个范围可以说是非常的大。网络应用、网络协议、网络通信、网络理论、网络安全、加密解密、路由算法、甚至编解码都是需要学习的学科。这个学科申请的竞争者非常多,来自EE,ECE背景的同学也都可以申请。 Telecommunication通讯就业不错,从设备商到运营商到第三方软件开发商,都有职位可以选择。很多公司的招人广告上写的就是Telecommunication和CS,EE相关专业,可见这个范围达到什么程度,明明是个应用专业,却都快成了与EE,CS平起平坐了。中国国内这方面工作机会也多,中国移动按照用户数量是世界第一大运营商。Networking里面有方向设计及到网络安全方面,这个方向的工作主要是在大型政府、国防、电信、电力、金融、铁路等部门的计算机网络系统——若在美国就业,因受到公民身份等限制不少,回国形势还是不错的。
7. 计算机图形及可视化 Computer Graphic and Visualization 这个专业主要研究图像的表达、处理等。计算机成像、三维动画、网络影像传播都属于这个方向的范畴。学习这个专业的同学可以去游戏设计公司,电影视频公司、电子出版、教育软件开发、商业简报、平面广告设计及其它多媒体应用领域的媒体集成与系统设计的工作岗位寻找机会。现代生活离不开图形图像的数字表达处理,离不开学习多媒体和计算机图形学的学生。
8. 游戏开发或游戏设计 Game Design 游戏设计是一门将软件技术、设计和美学结合在一起的艺术。艺术专业、计算机、软件工程、数字媒体及工科专业的学生都能尝试去申请游戏设计专业。 计算机专业下面的游戏开发方向属于比较小众的方向,在游戏程序开发方面,大致可以将技术划分为如下几个模块:游戏架构、图形图像、图形特效、游戏逻辑、游戏界面、人工智能、声音音效、网络连接、系统优化等;在分工细致的游戏开发团队会将游戏程序员按照每道工序而分为:图形程序员、声音程序员、人工智能或游戏关卡程序员、物理程序员。
9. 计算机科学技术 计算理论是完全偏向理论的学科,研究的不只是算法,更加重要的是算法的有效性和可行性。算法可行性,算法复杂度,密码学相关领域都是这个偏理论的方向的研究对象。这一点在美国和中国都是一样的,过于偏重理论和科技前沿探索,此专业方向工作比较难找。 计算机科学与工程计算具体还包括Bio-Informatics 生物信息学(这个目前影响力较 大),气象数据处理,数字处理算法,计算物理,计算化学等等。这个专业的特点就是交叉,往往要求申请者除了计算机科学相关的背景、还要有一些生物、物理、化学等方面的背景。目前此类学科属于前沿新生专业,就业形势不明朗。很多学习此类专业的同学就业的时候还是转向了传统的写代码相关的岗位。
10. Computer Algorithm(计算机程序法) 在CS领域流传着这么一句话:较 聪明的人做数学,次聪明的人做统计,平庸的人写代码。选择钻研算法,就意味着你相信自己是较 聪明的那一部分,并且能够有恒心和智商来解决各种复杂的数学问题。 可能你会感到很困惑:这不是纯理论么,不是一般纯理论都不好找工作么? 首先,计算机算法是所有CS的理论核心和逻辑核心,假如你能够掌握算法,写代码就好像是从阿拉伯数字“1”到中文“一”的转换那么直接和简单; 其次,当你到各种 IT公司面试时,他们较 主要考察的就是你的算法能力,换句话说,钻研算法的你假如能够“登泰山而小天下”,直接用较 简洁较 效率的算法解出面试官的题目,迎接你的就只剩下具体对于年薪具体数额的讨论了。 然而,不要以为这就是条平坦的道路,需要付出很大的代价:你可能大多时候每天只有小于5个小时的睡眠,你可能无论吃饭还是走路甚至睡觉,内心都会不停思考较 近遇到的某个求较 优解的题目,你可能变得越来越Nerd然后难以与周围人相处因为你不能忍受与一堆智商与你差距太大的人一起浪费时间,较 困难的是,你还得随时面对难以计数的挫败感,无力感和绝望感,而这些负面情绪都 极 有可能将你吞噬。因此,建议较 坚强并且对数学有 极 大兴趣的人选择这个方向~
就业总结
Developer/Programmer/Software Engineer “码农” ——CS较 大的出路,不论是CS任何方向(研究算法、人工智能、软件工程、图像处理、网络安全……),都可以写code编程做软件开发。 职业路径:通常coding不是做一辈子,一般做到1-2年就能做team leader, 再往上分成管理路线和技术路线。如果是管理路线则是Project Manager,然后发展成Section Manager ; 如果是技术路线则是Senior Engineer或Specialist。
Software QA (Quality Assurance) / Testing 软件测试 —— 找bug 提高软件质量,很多人的观念是QA不如Developer重要,但QA不可或缺,市场需求非常大。
Database/ Network Administration 数据库/网络管理 —— 对编程要求低,就业范围广,公司对数据库和网络依赖严重,学校或者任何机构都需要有高级管理员来管理维护网络和存储备份数据库。
UI (User Interface) 用户界面设计 ——UI设计是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。