计算机科学,研究计算机及其周围各种现象和规律的科学,亦即研究计算机系统结构、程序系统(即软件)、人工智能以及计算本身的性质和问题的学科。

中文名

计算机科学

外文名

Computer Science

学科门类

一级学科

简写

CS

台湾地区称谓

资讯工程(CSIE)

科学领域

作为一个学科,计算机科学涵盖了从算法的理论研究和计算的极限,到如何通过硬件和软件实现计算系统。CSAB(以前被叫做Computing Sciences Accreditation Board),由Association for Computing Machinery(ACM)和IEEE Computer Society(IEEE-CS)的代表组成,确立了计算机科学学科的4个主要领域:计算理论,算法与数据结构,编程方法与编程语言,以及计算机元素与架构。CSAB还确立了其它一些重要领域,如软件工程,人工智能,计算机网络与通信,数据库系统,并行计算,分布式计算,人机交互,机器翻译,计算机图形学,操作系统,以及数值和符号计算。

简介

计算机科学(英语:computer science,有时缩写为CS)是系统性研究信息与计算的理论基础以及它们在计算机系统中如何实现与应用的实用技术的学科。它通常被形容为对那些创造、描述以及转换信息的算法处理的系统研究。计算机科学包含很多分支领域;有些强调特定结果的计算,比如计算机图形学;而有些是探讨计算问题的性质,比如计算复杂性理论;还有一些领域专注于怎样实现计算,比如编程语言理论是研究描述计算的方法,而程序设计是应用特定的编程语言解决特定的计算问题,人机交互则是专注于怎样使计算机和计算变得有用、好用,以及随时随地为人所用。

理论计算机

主条目:理论计算机科学

广义的理论计算机科学包括经典的计算理论和其它专注于更抽象、逻辑与数学方面的计算。

计算理论

主条目:计算理论

按照Peter J. Denning的说法,计算机科学的最根本问题是“什么能够被有效地自动化?”计算理论的研究就是专注于回答这个根本问题,关于什么能够被计算,去实施这些计算又需要用到多少资源。为了试图回答第一个问题,递归论检验在多种理论计算模型中哪个计算问题是可解的。而计算复杂性理论则被用于回答第二个问题,研究解决一个不同目的的计算问题的时间与空间消耗。

著名的“P=NP?”问题,千禧年大奖难题之一,是计算理论的一个开放问题。

信息编码论

主条目:信息论和编码理论

信息论与信息量化相关,由Claude E. Shannon创建,用于寻找信号处理操作的根本极限,比如压缩数据和可靠的数据存储与通讯。编码理论是对编码以及它们适用的特定应用性质的研究。编码(code)被用于数据压缩,密码学,前向纠错,也被用于网络编码。研究编码的目的在于设计更高效、可靠的数据传输方法。

算法

算法指定义良好的计算过程,它取一个或一组值作为输入,经过一系列定义好的计算过程,得到一个或一组输出。算法是计算机科学研究的一个重要领域,也是许多其他计算机科学技术的基础。算法主要包括数据结构、计算几何、图论等。除此之外,算法还包括许多杂项,如模式匹配、部分数论等。

程序设计理论

主条目:程序设计语言理论

程序设计语言理论是计算机科学的一个分支,主要处理程序设计语言的设计、实现、分析、描述和分类,以及它们的个体特性。它属于计算机科学学科,既受影响于也影响着数学、软件工程和语言学。它是公认的计算机科学分支,同时也是活跃的研究领域,研究成果被发表在众多学术期刊,计算机科学以及工程出版物。

形式化方法

主条目:形式化方法

形式化方法是一种特别的基于数学的技术,用于软件和硬件系统的形式规范、开发以及形式验证。在软件和硬件设计方面,形式化方法的使用动机,如同其它工程学科,是通过适当的数学分析便有助于设计的可靠性和健壮性的期望。但是,使用形式化方法会带来很高的成本,意味着它们通常只用于高可靠性系统,这种系统中安全或保安(security)是最重要的。对于形式化方法的最佳形容是各种理论计算机科学基础种类的应用,特别是计算机逻辑演算,形式语言,自动机理论和形式语义学,此外还有类型系统、代数数据类型,以及软件和硬件规范和验证中的一些问题。

系统

主条目:并行性和分布式计算

并行性(concurrency)是系统的一种性质,这类系统可以同时执行多个可能互相交互的计算。一些数学模型,如Petri网、进程演算和PRAM模型,被创建以用于通用并发计算。分布式系统将并行性的思想扩展到了多台由网络连接的计算机。同一分布式系统中的计算机拥有自己的私有内存,它们之间经常交换信息以达到一个共同的目的。

数据库和信息检索

主条目:数据库和数据库管理系统

数据库是为了更容易地组织、存储和检索大量数据。数据库由数据库管理系统管理,通过数据库模型和查询语言来存储、创建、维护和搜索数据。

应用计算机科学

尽管计算机科学(computer science)的名字里包含计算机这几个字,但实际上计算机科学相当数量的领域都不涉及计算机本身的研究。因此,一些新的名字被提议出来。某些重点大学的院系倾向于术语计算科学(computing science),以精确强调两者之间的不同。丹麦科学家Peter Naur建议使用术语"datalogy",以反映这一事实,即科学学科是围绕着数据和数据处理,而不一定要涉及计算机。第一个使用这个术语的科学机构是哥本哈根大学Datalogy学院,该学院成立于1969年,Peter Naur便是第一任教授。这个术语主要被用于北欧国家。同时,在计算技术发展初期,《ACM通讯》建议了一些针对计算领域从业人员的术语:turingineer,turologist,flow-charts-man,applied meta-mathematician及applied epistemologist。三个月后在同样的期刊上,comptologist被提出,第二年又变成了hypologist。术语computics也曾经被提议过。在欧洲大陆,起源于信息(information)和数学或者自动(automatic)的名字比起源于计算机或者计算(computation)更常见,如informatique(法语),Informatik(德语),informatika(斯拉夫语族)。

著名计算机科学家Edsger Dijkstra曾经指出:“计算机科学并不只是关于计算机,就像天文学并不只是关于望远镜一样。”("Computer science is no more about computers than astronomy is about telescopes.")设计、部署计算机和计算机系统通常被认为是非计算机科学学科的领域。例如,研究计算机硬件被看作是计算机工程的一部分,而对于商业计算机系统的研究和部署被称为信息技术或者信息系统。然而,现如今也越来越多地融合了各类计算机相关学科的思想。计算机科学研究也经常与其它学科交叉,比如心理学,认知科学,语言学,数学,物理学,统计学和经济学。

计算机科学被认为比其它科学学科与数学的联系更加密切,一些观察者说计算就是一门数学科学。早期计算机科学受数学研究成果的影响很大,如Kurt Gödel和Alan Turing,这两个领域在某些学科,例如数理逻辑、范畴论、域理论和代数,也不断有有益的思想交流。

计算机科学和软件工程的关系是一个有争议的话题,随后关于什么是“软件工程”,计算机科学又该如何定义的争论使得情况更加混乱。David Parnas从其它工程和科学学科之间的关系得到启示,宣称计算机科学的主要重点总的来说是研究计算的性质,而软件工程的主要重点是具体的计算设计,以达到实用的目的,这样便构成了两个独立但又互补的学科。

人工智能

主条目:人工智能

这个计算机科学分支旨在创造可以解决计算问题,以及像动物和人类一样思考与交流的人造系统。无论是在理论还是应用上,都要求研究者在多个学科领域具备细致的、综合的专长,比如应用数学,逻辑,符号学,电机工程学,精神哲学,神经生理学和社会智力,用于推动智能研究领域,或者被应用到其它需要计算理解与建模的学科领域,如金融或是物理科学。人工智能领域开始变得正式源于Alan Turing这位人工智能先驱提出了图灵试验,以回答这样一个终极问题:“计算机能够思考吗?”

机器翻译

主条目:机器翻译

1947年,美国数学家、工程师沃伦·韦弗与英国物理学家、工程师安德鲁·布思提出了以计算机进行翻译(简称“机译”)的设想,机器翻译从此步入历史舞台,并走过了一条曲折而漫长的发展道路。机译被列为21世纪世界十大科技难题。与此同时,机译技术也拥有巨大的应用需求。

机译消除了不同文字和语言间的隔阂,堪称高科技造福人类之举。但机译的译文质量长期以来一直是个问题,离理想目标仍相差甚远。中国数学家、语言学家周海中教授认为,在人类尚未明了大脑是如何进行语言的模糊识别和逻辑判断的情况下,机译要想达到“信、达、雅”的程度是不可能的。这一观点恐怕道出了制约译文质量的瓶颈所在。

体系结构与工程

主条目:计算机体系结构和计算机工程

计算机系统结构,或者数字计算机组织,是一个计算机系统的概念设计和根本运作结构。它主要侧重于CPU的内部执行和内存访问地址。这个领域经常涉及计算机工程和电子工程学科,选择和互连硬件组件以创造满足功能、性能和成本目标的计算机。

图形与视觉

主条目:计算机图形学

计算机图形学是对于数字视觉内容的研究,涉及图像数据的合成和操作。它跟计算机科学的许多其它领域密切相关,包括计算机视觉、图像处理和计算几何,同时也被大量运用在特效和电子游戏。

安全和密码学

主条目:计算机安全和密码学

计算机安全是计算机技术的一个分支,其目标包括保护信息免受未经授权的访问、中断和修改,同时为系统的预期用户保持系统的可访问性和可用性。密码学是对于隐藏(加密)和破译(解密)信息的实践与研究。现代密码学主要跟计算机科学相关,很多加密和解密算法都是基于它们的计算复杂性。

计算科学

计算科学(或者科学计算)是关注构建数学模型和量化分析技术的研究领域,同时通过计算机分析和解决科学问题。在实际使用中,它通常是计算机模拟和计算等形式在各个科学学科问题中的应用。

信息科学

主条目:信息科学

软件工程

主条目:软件工程

软件工程是对于设计、实现和修改软件的研究,以确保软件的高质量、适中的价格、可维护性,以及能够快速构建。它是一个系统的软件设计方法,涉及工程实践到软件的应用。

奖项

计算机科学领域的最高荣誉是ACM设立的图灵奖,被誉为是计算机科学的诺贝尔奖。它的获得者都是本领域最为出色的科学家和先驱。华人中首获图灵奖的是姚期智先生。他于2000年以其对计算理论做出的诸多“根本性的、意义重大的”贡献而获得这一崇高荣誉。

专业院校

美国开设计算机科学专业的院校

普渡大学西拉法叶分校,弗吉尼亚大学,密西根大学安娜堡分校,乔治城大学,维克森林大学,耶鲁大学,哥伦比亚大学,华盛顿大学,卡内基梅隆大学,佐治亚理工学院,加州理工学院,麻省理工学院,斯坦福大学,加州大学伯克利分校,伊利诺伊大学香槟分校,威斯康星大学麦迪逊分校,伦斯勒理工学院,哈佛大学,俄勒冈大学。

著名高校

在计算机科学领域排名世界前五的大学:

1. Carnegie Mellon University卡内基梅隆大学

2. Massachusetts Institute of Technology麻省理工学院

3. Stanford University斯坦福大学

4. University of California -Berkeley加州大学伯克利分校

5. Cornell University康奈尔大学

5. University of Illinois-Urbana Champaign伊利诺伊大学香槟分校

专业介绍

培养目标

本专业培养德、智、体全面发展,具有计算机应用技术的基础理论知识,具备计算机及相关设备的维护与维修、行业应用软件、平面图像处理、广告设计制作、动画制作、计算机网络及网站建设与管理、数据库管理与维护等应用能力和操作能力的高等技术应用性人才。

主要课程

计算机应用基础、计算机组装与维护、计算机局域网络的建设与管理、网络工程、操作系统、服务器、数据库的开发与应用、网站建设与网页设计、C/C++语言、VisualBasic语言、平面设计、3D图形设计、多媒体设计、专业英语。

就业方向

毕业生主要面向交通系统各单位、交通信息化与电子政务建设与应用部门、各类计算机专业化公司、广告设计制作公司、汽车营销技术服务等从事IT行业工作。

研究课题

①、计算机程序能做什么和不能做什么(可计算性);

②、如何使程序更高效的执行特定任务(算法和复杂性理论);

③、程序如何存取不同类型的数据(数据结构和数据库);

④、程序如何显得更具有智能(人工智能);

⑤、人类如何与程序沟通(人机互动和人机界面)。 

系统分类

计算机系统可划分为软件系统与硬件系统两大类。

硬件

结构控制和指令系统

算法和逻辑结构

存储器结构

冯·诺伊曼结构

哈佛结构

输入/输出和数据通信

数字逻辑

逻辑设计

集成电路

计算机系统组织

计算机系统结构

计算机网络

分布式计算

网络安全

计算机系统实现

软件

系统软件

操作系统

编译器

应用软件

计算机游戏

办公自动化

网络软件

CAD软件

计算机程序

程序设计和程序设计实践

面向对象技术

程序设计语言

软件工程

软件复用

驱动程序

计算机模拟

程序设计方法学

数据和信息系统

数据结构

数据存储表示

数据加密

数据压缩

编码与信息论

文件

信息系统

管理信息系统

决策支持系统- 专家系统

数据库

信息存储和数据存取

信息交互与表达

主要的研究领域

形式化基础

逻辑学

谓词逻辑

模态逻辑

时序逻辑

描述逻辑

数学

泛代数

递归论

模型论

概率论和数理统计

逻辑代数

布尔代数

离散数学

组合数学

图论

网论

信息论

理论计算机科学

形式语言

自动机

可计算性

算法

计算复杂性

描述复杂性

编译器

程序设计理论

信息论

类型理论

指称语义

微程序

遗传算法

并行计算

计算方法学

人工智能

机器翻译

计算机图形学

图像处理与计算机视觉

模式识别

语音识别

文字识别

签名识别

人脸识别

指纹识别

仿真与建模

数字信号处理

文档与文本处理

计算机应用

数值计算

数值分析

定理机器证明

计算机代数

工程计算

计算机化学

计算机物理

生物信息论

计算生物学

非数值计算

工厂自动化

办公室自动化

人工智能

信息存储与检索

符号语言处理

计算机辅助科学

计算机辅助设计

计算机辅助教学

计算机辅助管理

计算机辅助软件工程

机器人学

多媒体技术

人机交互

电子商务

特定技术

测试基准

机器视觉

数据压缩

软件设计模式

数字信号处理

文件格式

信息安全

国际互联网络

超大规模集成电路设计

网络传输协议

网络处理器技术

整数运算器

浮点运算器

矩阵运算处理器

网格

计算科学史

计算机历史

软件业历史

编程思想  

学科

计算机科学与另外的一些学科紧密相关。这些学科之间有明显的交叉领域,但也有明显的差异。

信息科学 - 软件工程 - 信息系统 - 计算机工程 - 信息安全 -密码学- 数学 -工程学- 语言学 - 逻辑学

发展历史

计算机科学中的理论部分在第一台数字计算机出现以前就已存在。计算机科学根植于电子工程、数学和语言学,是科学、工程和艺术的结晶。它在20世纪最后的三十年间兴起成为一门独立的学科,并发展出自己的方法与术语。 

30年代

英国数学家A.M.图灵和美国数学家E.L.波斯特几乎同时提出了理想计算机的概念(图灵提出的那种理想机在后来的文献中称为图灵机)。 

40年代

数字计算机产生后,计算技术(即计算机设计技术与程序设计技术)和有关计算机的理论研究开始得到发展。这方面构成了所说的理论计算机科学。至于图灵机理论,则可以看作是这一学科形成前的阶段。至于“计算机科学”一词则到60年代初才出现,此后各国始在大学中设置计算机科学系。学科内容 计算机科学是一门年轻的科学,它究竟包括哪些内容,还没有一致公认的看法。一般认为,计算机科学主要包括理论计算机科学、计算机系统结构、软件工程的一部分和人工智能。理论计算机科学 理论计算机科学是在20世纪30年代发展起来的。40年代机电的与电子的计算机出现后,关于现实计算机及其程序的数学模型性质的研究以及计算复杂性(早期称作计算难度)的研究迅速发展起来,形成自动机论、形式语言理论、程序设计理论、算法设计与分析和计算复杂性理论几个领域。计算机系统结构 

50年代

50年代以来,计算机的性能在计算速度和编址空间方面已提高了几个数量级。但大部分是通过元件更新而获得的。在系统结构方面基本上仍是属于40年代后期形成的存储程序型,即所谓诺伊曼型机器。这种结构的主要特点是它属于控制流型。在这种结构中,一项计算先做什么后做什么是事先确定了的,程序中指令的顺序是事先确定了的。为了在计算机的性能方面取得大的进展,需要突破这种旧的形式。计算机系统结构方面的重要课题之一,是探索非诺伊曼型机器的设计思想。在非诺伊曼型机器中,有一种是70年代初提出的数据流机器(又名数据驱动机器)。美国、苏联和英国都已制成这种机器。这种机器的特点是,在一项计算中先做什么后做什么不是事先确定,所执行的指令是动态排序的。排序的原则是操作数已准备就绪的先做,因而称作数据驱动机器。这种类型的机器更便于实现并行计算。软件工程 程序设计在相当长的时间内是一种类似“手艺”而不是类似现代工程的技术。 

60年代

60年代以来出现了大程序。这些大程序的可靠性很难保证。到60年代后期,西方国家出现了“软件危机”。这是指有些程序过于庞大(包含几十万条以至几百万条指令),成本过高而可靠性则比较差。于是提出了软件工程的概念,目的在于使软件开发遵守严格的规范,使用一套可靠的方法,从而保证质量。现代软件工程的方向是形式化和自动化,而形式化的目的在于自动化。这里所说的自动化就是将程序设计中可以由机器来完成的工作,尽量交给机器去做。中心课题之一是程序工具和环境的研究。程序工具是指辅助人编程序的程序,如编译程序、编辑程序、排错程序等;程序环境则是指一套结合起来使用的用来辅助人编程序的程序工具。人工智能 用计算机模拟人的智能,特别是模拟思维活动的技术及其有关理论。由于人的思维活动离不开语言,而且人对于某一类问题进行思索和探索解法时,总是需要以关于这一类问题的基本知识(专业知识或常识)作为出发点。于是,知识表示和机器对自然语言的理解就构成人工智能的两个重要领域。所谓知识表示,是指将原来用自然语言表示的知识转换成用符号语言表示的,从而可以储存在机器内供机器使用的知识。人工智能的研究角度有探索法的角度和算法的角度。通常所说的解题算法是指机械的和总是有结果的方法,而这里所说的算法却是广义的,包括那些机械的而在使用时不一定有结果的算法。这种方法时常称作半可判定的方法。 

人在解决问题时,时常采用探索法。这种方法具有“试错法”的性质,也就是说,试验若干条途径,一条路走不通时再试另一条,直到问题得到解决时为止。机器可以模拟人用探索法解题的思维活动。但由于可能途径的数目非常之大,不可能进行穷举式的探索。人一般是只选出一些最有希望得到结果的途径去进行探索。人的这种能力,就是进行创造性思维的能力。这是机器极难模拟的事情。采用算法角度,使用特定的解题算法或半可判定的方法时,会遇到另一方面的困难。那就是当问题的复杂程度较高时(比如说是指数的),即使问题是有结果的,机器也无法在实际可行的时间内得到结果。在计算机出现的初期,人们曾寄希望于机器的高速度,以为在模拟人的思维时,机器可能用它的高速度来换取它所不具有的创造性思维。但通过“组合性爆炸”问题(“组合性爆炸”是指一些组合数学中的问题,在参数增大时,计算时间的增长率时常是指数的,甚至高于指数),人们认识到,单纯靠速度不能绕过组合性爆炸所产生的障碍。有无办法来克服这种困难,尚有待于进一步研究。与其他学科的关系 计算机是由物理元件构成的,迄今主要是由电子元件构成的。因此,物理学的一些分支和电子工程便构成计算机科学的基础。同时,计算机科学在一定意义上是算法的科学,而算法是一个数学概念。因此,数学的某些分支如算法理论(即可算性理论,又名递归函数论)也构成计算机科学的基础。但计算机科学已发展成为一门独立的技术科学,既不是电子学的一个分支,也不是数学的一个分支。这是就这个学科的整体而言。至于理论计算机科学,由于它可以看作是计算机科学的数学基础,在一定意义上,可以看作是数学的一个分支。另一个与计算机科学有密切关系的学科是控制论。控制论作为应用数学方法来研究机械系统和生命系统中的控制和通信现象的学科,同计算机科学有内容上的交叉,但后者不是它的一部分。自从40年代制成数字计算机以来,计算机的性能有了很大的提高。但在系统结构方面变化不大。一些计算技术发达国家正在研制新一代的计算机。这种计算机的系统结构将与过去40年的机器很不相同,所用的程序设计语言也将是新型的。计算机科学将研究由此出现的新问题,如有关并行计算的问题。 

对计算的数学性质的研究大都还是关于串行计算的,对并行计算性质的研究自70年代才发展起来,预计将成为计算机科学的中心课题之一。另一个问题是程序设计的自动化问题。在程序设计方面,明显的趋势是将机器能做的尽量交给机器去做。程序环境的研究构成了软件工程的一个中心课题。形式化方法越来越受到重视,因为它是提高自动化程度所必需的。 

早期,虽然英国的剑桥大学和其他大学已经开始教授计算机科学课程,但它只被视为数学或工程学的一个分支,并非独立的学科。剑桥大学声称有世界上第一个传授计算的资格。世界上第一个计算机科学系是由美国的普渡大学在1962年设立,第一个计算机学院于1980年由美国的东北大学设立。多数大学都把计算机科学系列为独立的部门,一部分将它与工程系、应用数学系或其他学科联合。