软件工程与计算机科学的关系

软件工程中的"工程"二字也大有来历,人们把下面的活动称之为工程:

创造性地运用科学原理,设计和实现建筑、机器、装置或生产过程;或者是在实践中使用一个或多个上述实体;或者是实现这些实体的过程。远古时期,人们互相协作建成了不少工程奇迹,其中有些现在还能看到(例如希腊雅典的帕特农神庙、古罗马帝国的罗马水道、中国的长城等),我们想象这些工程在设计和建造的过程中一定牵涉到了大量的计算、计划、各类角色的协作,以及成百上千的人,动物、机械的劳作。这些因素在后来出现的各种"工程"(如化学工

程、土木工程)中依然存在。中国大陆的高校中大致有下面三种讲计算机软件的机构:

计算机科学与技术系或学院

软件学院

软件工程系、软件工程学院

很多同学在报名时不知道它们的区别,进去之后发现除了收费高低不同,学的科目差不多,毕业后大部分同学都是写程序,似乎差别不大13?其实,它们的区别还是挺大的。和数理化相比,计算机科学是一内相当年轻的学科,虽然我们可以追溯到巴贝奇(Charles Babbage:1791-1871)、埃达(AdaLovelace,1815-1852)、图灵(AlanTuring,1912-1954)等计算机科学的先驱,但是"ComputerScience"这个学科的名字是1959年才正式提出,综合维基百科中"计算机科学"的词条和微软学术搜索(Microsoft Academic Search)注释9对于计算机科学子领域的划分,计算机科学(Computer Sci-ence)这一学术领域可以分为下面这些领域:

计算理论(Theoretical Computing

信息和编码理论(Information and Coding The-ory)算法和数据结构(Algorithm and Data Struc-ture,形式化方法(Formal Methods)

程序设计语言(Programming Language)偏实践的领域:计算机体系结构(Computer Architecture)

并行计算和分布式系统(Concurrent,Parallel and DistributedSystem)

实时系统和嵌入式系统(Real Time and Embed-ded System)

操作系统(Operating System)

计算机网络(Networking)

科学计算(Scientific Computing)

安全和密码学(Security and Cryptography)

人工智能(Artificial Intelligence)

这个领域酒盖了许多相关的领域,如模式识别(Pattern数据挖掘(DataRecognition)、机器学习(MachineLearning)Mining)、信息提取(Information Retrieval)等。

计算机图形学(Computer Graphics)、计算机视觉(ComputerVision)

多媒体(Multimedia)

数据库和大规模数据处理(Database and Large Scale DataProcessing)

·万维网(World wide Web)

自然语言处理和语音(Natural Language Pro-cessing and Speech)人机交互(Human Computer Interaction)

软件工程(Software ngineering

根据我们对软件特性及工程这一概念的了解,可以看到,计算机科学中的理论研究部分,大多可以从形式上证明,与数学、离散数学、数理逻辑密切相关;计算机科学中与实践相关的部分,都和数据以及其他学科发生关系;软件工程则和人的行为、现实社会的需求息息相关。软件工程的研究目标(软件的开发、运营和维护)都有"人"出现,这些"人"可以是项目需求的提供者,可以是软件的开发人员,还可以是软件的用户。这一特征与其他计算机科学的子领域明显不同。其实,在任何科学领域中,都有偏理论的子领域和偏应用的子领域(例如数学与应用数学),当偏应用的领域得到长足发展之后,就会更多地被大家所熟知,甚至成为一内独立的学科,这并不说明相对应的两方面有高低或优劣之分。

相关推荐
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车2 天前
C/C++ 为什么需要编译器?
开发语言·c++
盖伦发发2 天前
软件工程SOLID 五大设计原则
后端·软件工程
霍霍的袁2 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超2 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int2 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
Terra.K2 天前
后端+AIAGENT项目开发指南
后端·agent·个人开发
白远山2 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
CoderYanger2 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法