傻傻分不清楚 细数CS下的16大分类
计算机系(Computer Science)下到底有多少不可以思议的分类呢?有多少人很认真地去区分他们呢?今天小编给大家全面盘点一下。
1.ArtificialIntelligence人工智能
人工智能学习研究的核心领域大致包括:学术呈现,推理,学习,规划,决策,视觉,机器人,语音和语言处理。同时AI也旨在运用先进的算法来解决各领域的实际问题,其中包括生物信息学,网络及各类系统,搜索和信息检索等等。人工智能与认知科学也是紧密相联的,包括心理学,语言学和哲学方面。除此之外,研究人工智能还需要涉及到以下的技术和工具:统计学,神经科学,控制,优化和业务研究。有大学也开设AI与Machine Learning结合的课程,由于ML本身涉及的内容就足以开设一门课程,很多大学也有独立的机器学习课程。也有些大学虽然没有AI专业,但是有Robotic Systems(机器人系统)相关的课程,其实也是类似人工智能的专业。
2.Algorithmsand Theory 计算机算法和理论
理论计算机科学是研究更高效的算法和协议。它强调学习许多20世纪的发明,如密码学、计算生物学、机器学习、量子计算等先进算法和理论。同时计算机算法和理论还研究包括复杂性理论,算法,数据结构,计算几何,密码学,机器学习和计算经济学,并且与计算生物学,图形,网络和系统紧密连接。属于基础理论学习的学科,需要扎实的数学基础。
3.Biosystems& Computational Biology生物系统与计算生物学
现代生物学越来越依赖计算机科学和电子工程的算法和工具。生物数据包括多品种的基因组数据,多态变体的数据库,蛋白质结构和RNA结构,基因数据库,实验生物化学测量数据和生物医学数据。对这些数据进行表达,操纵和整合需要计算机科学的技术,如数据库,算法,人工智能,图形,信号处理和图像处理,因而生物系统也被称为Bioinformatics生物信息学。
4.BigData 大数据
大数据相关专业的别称包括:Data Science(数据科学),Data Analytics(数据分析), and Data Mining(数据挖掘)。由于互联网和社交媒体的兴起,数据量空前庞大,而获取数据的设备也越来越多,如智能手机和微型传感设备收集数据、科学仪器收集类似的基因组数据,天文数据,医疗。管理和分析“大数据”需要全新的技术和系统。除了通过常规数据库系统及相关应用程序管理数据外(已经难以驾驭多样化嘈杂的数据分析),还要增强捕捉和关联个人数据,保护安全和隐私问题的能力。要解决大数据管理的各个方面,需要学习的方向包括:高性能计算,数据库,云计算,分布式系统,可视化以及安全性和隐私的领域。所以大数据属于CS中的交叉学科。
5.ComputerArchitecture计算机系统结构
计算机系统结构是计算机的机器语言程序员或编译程序编写者所看到的外特性。所谓外特性,就是计算机的概念性结构和功能特性,主要研究计算机系统的基本工作原理,以及在硬件、软件界面划分的权衡策略,建立完整的、系统的计算机软硬件整体概念。有大学将Complier(编译器)和Architecture(系统结构)一起研究,研究内容集中在为下一代计算机和计算组件进行硬件,编程语言和编译器的设计,很多大学将编程语言及编译器单独开设课程进行学习。
6.ComputerGraphics and Visualization 计算机图形学
计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。除这些以外,还会研究如何科学可视化,基于物理渲染,动画制作,计算机辅助几何设计,快速成型,计算机辅助角膜建模和可视化,医学成像等等。相较于艺术类的动画制作而言,计算机图形学更注重算法及理论的学习。
7.DatabaseSystems数据库系统
在过去的几年中,运用数据库的重点领域包括生命科学和生物数据库,图形数据库,传感器网络数据管理,社交网络数据管理,移动数据库,P2P网络和非结构化的文本数据库。数据库系统的学习将继续在传统数据管理的基础上进行创新,如提高管理和查询数据,空间数据库的速率,增强查询处理和优化,数据流,近似查询处理和数据挖掘的能力。与Data Science相比,它更倾向于单纯的数据处理管理(Database Management Systems or Information Systems),随着时代发展,这个专业方向正在逐渐被发展独立开来成为IS。
8.DistributedSystems 分布式系统
分布式系统往往与操作系统(Operating Systems)同时学习,也有学校直接用系统(Systems)来概括这个专业,学习的偏重性根据学校不同有偏差。操作系统的研究重点是针对一台机器或物理设备运行的系统软件,而分布式系统则是研究如何实现网络互连的多台计算机运行一致的,安全的,可扩展的,可靠的系统。学习重点包括调查算法,设计原则,并制定运行现代计算机系统所必需的软件工程技术。
9.High-PerformanceComputing 高性能计算
高性能计算专业主要是学习用大型计算机来解决的重大科学和工程问题及并行算法和开发相关软件。HPC研究的重点在于从创新的核心数值算法中提炼精华,运用到系统软件或者嵌入到需要大规模生产计算的工具中去。该专业的形成与“大数据”息息相关。有大学也将高性能计算的学习并入科学计算(Scientific Computing)的学习。
10.Human-ComputerInteraction 人机交互设计
人机交互是指通过计算机输入、输出设备,以有效的方式实现人与计算机对话的技术。它与认知学、人机工程学、心理学等学科领域有密切的联系。主要研究在未来云计算环境中如何人机交互,包括办公室,家庭,移动,医疗互动。该课程强调对环境的感知系统,感知接口(如计算机视觉和语音),可视化和学习技术。
11.MachineLearning 机器学习
机器学习和计算机感知的研究主要集中在机器学习的基础理论和实验研究机器学习算法。在学习ML的同时,要学习如何在其他领域运动ML,比如生物学和信息图像采集。同时,大多数大学对将ML运用到大而复杂的数据集中非常感兴趣,因而也将ML归类于Data Science中的数据挖掘(Data Mining)或分析。应用实例包括物种分布的栖息地建模,大量学术文章主题归类,大脑图像分类,蛋白质功能分类等等。
12.Networking and Systems 互联网与系统
互联网的学习往往与操作系统直接相关联,具体研究内容包括分布式系统,操作系统,存储系统,网络和网络架构,移动和无线系统和网络协议设计。网络架构的学习包括叠加架构,分布式哈希,下一代网络的设计,对等联网,移动和点对点网络,故障排除,能耗影响问题的研究等等。也有学校将互联网与通信(Communications)结合进行学习,其专业性质是属于EE与CS的交叉课程,很多学校归类于EE,而伯克利大学将其归类于EECS系下。
13.ProgrammingLanguages
编程语言的学习主要目的是为了提高程序的安全性和隐私性,极大限度得提高软件的灵活性,可靠性,可用性,高效性,可重复利用性。编程语言的学习往往会和编译器(Complier)一起学习,研究重点集中在云计算,移动端计算,高利用率系统,静态分析,函数型编程,调试和隐私保护计算。同时编程语言的学习非常侧重于编译器的优化,软件的设计,合成和测试,因而编程语言往往也和软件工程(Software Engineering)并为一个专业进行学习。
14.ScientificComputing and Numerical Analysis 科学计算和数值分析
科学计算,也被称为数值分析或计算数学。它的重点是在设计和分析算法来解决各领域发生的数学相关问题,特别适用于科学和工程领域以及高性能电脑上算法的应用(最明显的就是应用在并行和分布式系统中)。研究的内容包括数值线性代数,快速求和的方法等等。并且在不同的领域中也有涉入,比如影像学,流体力学和声学。也有大学将科学计算和数值分析分开,科学计算更倾向于高性能计算(HPC)的学习,数值分析更倾向于统计,数学领域。
15.Securityand Cryptography 安全和加密
安全与加密注重密码学从理论到应用的学习和时间,并且强调研究数据库的隐私,监控系统的隐私,基于Web的应用程序的隐私及传感器网络安全,测试平台的安全,人机界面的安全,互联网安全(在Networking专业的学习中也会涉及,但是如果被分出学习的话,更偏向于密码学的学习,对数学逻辑思维的要求较高)等等。有些学校甚至从计算机信息安全这个专业的方向衍生到对心理学及经济学、社会学的思考和学习中去了。
16.SoftwareEngineering 软件工程
软件工程的目标是改进现有的技术来提高软件系统(也有学校开设Software Systems专业,其内容和软件工程相似)的成本、准确性和可用性。将这三个互相制衡的因素都实现,是目前软件工程研究的重点。同时软件工程也致力于软件的开发,测试及维护等等工作,立志于解决复杂系统及处理程序中产生的问题。