信息工程分为三个大的分支:半导体与电子元件,计算机硬件、软件和系统设计,通信设备与服务。其中,计算机硬件、软件和系统设计的产业规模是最庞大的。
算盘和算法,即进行计算的设备和法则,这两股细流通过工程学和数学汇合成计算机科学这条大河。算法这个单词源自9世纪初中亚波斯地区的花剌子密的名字。花剌子密撰写了两本影响久远的著作。其中一本讲述了算术,此书在将现在我们所使用的印度数字引入欧洲的过程中发挥了作用;第二本书的题目产生了代数学(algebra)这个单词,这本书通过移项和化简得办法解方程。它们一起勾画了计算机科学的三个核心思想:信息表示法、操作程序和抽象符号处理。
数字是数目的表述。卓越的阿拉伯计数法有自己的位置记法和零符号,大大促进了书面数字计算程序的发展,譬如乘法题122*109,就可以通过算术程序计算,这些新的算术程序就被称为算法,随着时间的流逝,算法代替了算盘和算表。算法一词的含义渐渐扩展到将其他的计算规则包括在内。算法也意味着代数学的实际应用,代数学的能力在于对抽象的非数值符号的运算。在现代计算中,算法超越了数字运算,扩展到运用任意符号求解一般问题。
20世纪30年代,数理逻辑学家图灵、丘奇、哥德尔使算法概念明朗化,将算法视为一个程序,这个程序由有限序列的确定指令组成,它将一个给定的输入转换为一个特定的输出。图灵讨论了算法能得到什么,不能得到什么——即什么能被有效计算的问题,这些工作奠定了计算机科学的逻辑基础。
自17世纪开始,人们作出许多努力来建造算术运算的自动化机器,但是没有一个是真正成功的。为了便于计算,对数表、三角函数表和其他数学函数被等大量数表在18世纪相继问世。巴贝奇于1822年说服英国政府出资赞助建造“差分机”来代替数表,差分机可用单一的算法完成加法和减法运算。在长达10年的研究中,巴贝奇又提出了“解析机”计划,这是一种多用途计算器,巴贝奇得到了女伯爵阿达洛夫莱斯(Ada Lovelace)的支持。尽管巴贝奇的解析机最终没有成功,但其设计思想显著影响了后来者。
1943年,宾夕法尼亚大学的埃克特和莫奇利工程团队开始研制ENIAC,ENIAC是世界上第一台大型通用电子数字计算机,具有18000个真空管,重达30吨,于1946年开始运行。
1944年,埃克特和莫奇利开始继续开发下一代的Edvac计算机,想到了将操作指令作为数据储存在同一记忆器件上,这个概念就是“存储程序”。当年9月,冯诺依曼和他们详细探讨了设计,之后冯诺依曼起草了Edvac的设计报告,该报告阐述了关于存储程序式计算机的逻辑设计。冯诺依曼的报告流传开来,存储程序式计算机以“冯诺依曼架构”而被人所知。
埃克特和莫奇利在1946年成立了第一家早期计算机公司,后来公司被卖给了雷明顿-兰德公司,该公司设计了世界上第一台商用计算机Univac。Univac之后,各种计算机公司纷纷成立,诸如IBM公司、王安实验室、数字设备公司(DEC)等。
当计算机产业在领跑时,尽管大学里开设了各种计算机课程,但这些课程都设置在电气工程系和数学系。直到1962年,当IBM的计算机产品收入超过10亿美元时,斯坦福大学和普渡大学才成立了独立的计算机科学系。
计算机科学到底包括什么?到底是科学,还是工程,这些问题直到今天也没有完全准确的答案。计算机科学事实上是一种独立的新型科学,但它与工程学紧密结合,因此很多人都认为计算机科学也是一门新型的工程学。
计算机科学与工程的主题,大致可以分为三大领域:基础、系统和应用。计算机的基础研究依赖于数学,主要从事有关计算理论、可计算性和复杂性、形式化模型、算法分析、语言表述、逻辑组合、密码学等数学分支。
计算机的应用往往是工程技术密集型的。设计与开发大规模系统存在着特定的困难,为了对付这些困难,一个被称为软件工程(该名词出现于1968年的一次会议上)的计算机分支变得日益重要。
计算机的系统包括硬件和软件。现在,为特定应用所编写的程序可以装进芯片,反之,可以把嵌入式芯片设计成可重复编程的。在早期的计算机里,硬件和软件之间的界线是一清二楚的,然而随着计算机技术的发展,硬件和软件已经很难明确区分了,很多时候硬件和软件在逻辑上是完全等价的。