计算机科学与技术专业学什么?为什么要学数据结构、操作系统、计算机组成原理和计算机网络?

1. 引言

计算机科学与技术专业学什么?这可能是很多人非常好奇的事情。在2023年,我的第一篇博客将会从自身的本硕博三代“计算机科学与技术”专业出身的经历,自我介绍一下计算机科学与技术专业最少要学什么。

计算机科学与技术是一个一级学科的定义,代号为0812,实际上就是表明与计算机最相关的专业要么是它要么就隶属于它。就学科包含范围的广泛性和与计算机本身的相关性而言,它是计算机大类中的正统专业,当然还有一个兄弟专业叫做软件工程(0836),是一个新的一级学科分支。

如果说,计算机科学与技术需要学习的最小范畴是什么?我优先推荐考研408所包含的四门专业:《数据结构》、《操作系统》、《计算机组成原理》和《计算机网络》。为什么这么说,因为掌握了它们,你就可以掌握基本的计算机思维。这里面不仅仅包括“术”(计算机技术),更多的是包括了“道”(计算机科学)。

2. 数据结构

《数据结构》也有的叫《数据结构与算法》,它的本质是向你介绍如何描述数字虚拟世界的。正如我们描述现实世界一般,我们需要描述的是世界的物质以及其运行的规律,而《数据结构》则是描述数字虚拟世界的存储形式和它们的运作规律的,因此它分为两个部分,一部分是其存储形式(数据结构)、另一部分是该形式下的运作规律(算法),这才是为什么有人说“程序=数据结构+算法”。

关于数据结构,根据数据间的对应关系,可以分为线性表(一对一关系)、树(一对多关系)和图(多对多关系)以及查找表(无关系)等。然后,我们会细化学习一些概念如顺序表、单链表、双链表、循环链表以及在这些数据结构上的操作,也就是基础算法,如增删改查(字符串的模式匹配、最小生成树、最短路径等)。

3. 操作系统

总有人一提《操作系统》,脑袋里第一反应就是windows,linux等等。没有错,这些是操作系统的一种实例,但是我们要学的不仅仅是如何使用这些实例,而是这些实例背后的原理。

为什么要学习操作系统?从理论上讲,就是学习如何管理和调度虚拟世界的数据的。前面《数据结构与算法》只是介绍了这个虚拟的数字世界的基本组成和各个物质之间的运作规律。但是我们需要的是要让这个虚拟的世界为我们人类的意识服务,因此,我们就需要学习和了解如何操作这个虚拟世界中的物质,这样的系统叫做《操作系统》。它的本质就是搭建人和机器之间的桥梁。

那既然学习是如何管理和调度数据的,主要就是讲述了对于不同对象的管理,主要包括线程和进程的管理和调度(处理器),对于内存的管理和调度(内存),对于文件的调度和管理(硬盘)、对于I/O设备的管理和调度等(外设)。这也是学习一个计算机在各个硬件中数据是如何被管理的。想想计算机还有哪个运作部分没有学习到?

操作系统是程序设计的集大成者,其他任何复杂的程序或者软件都是脱胎于操作系统的。因此如果能够学好操作系统,对于培养程序设计的高阶思维是非常有帮助的。

当然,也有很多说学习操作系统,学习的是linux各种命令等等,我认为它们是《操作系统》课程中应当了解和掌握的,但是并不是主要部分。这就像是前面我讲的都是“计算机科学”,而如何运行各种命令属于“计算机技术”。

4. 计算机组成原理

如果说《数据结构》讲述的是计算机世界中完全虚拟的东西,那么《操作系统》讲述的是虚拟与现实的结合部分,而《计算机组成原理》则是完全讲述的是现实的部分,因此如果要学习这部分,还需要对于物理上的基础知识掌握,因此,大部分会设有《大学物理》、《电工电子》、《数电模电》等前置课程用于做铺垫。

在现阶段,计算机组成原理讲的都是“冯诺依曼”架构下的计算机的组成部分和它们的运行原理。因此,除了简要介绍计算机的物理组成和计算机运算指令的物理表示之外,重点只讲述2个部分,分别是:存数据和算数据。

存数据在数据结构中讲述了其概念和表示,但是这些数据结构真正的在物理上如何存储的呢?这时候就需要学习存储器的物理存储方式,也要学习物理上管理这些数据的方法。

算数据就更不用讲了,那就是整个计算机的核心——CPU。CPU是什么东西、如何组成的,它又是如何完成最神奇的运算的,这些知识都会在计算机组成原理中讲述。

5. 计算机网络

正如我刚才讲的,《数据结构》、《操作系统》、《计算机组成原理》已经将整个计算机的虚拟、虚拟与现实、现实部分讲述清楚了,那么还缺少什么呢?没错,计算机本身已经完整了,缺少的是计算机和计算机之间沟通的方式方法的描述。

如同我们介绍一个动物或者事物的时候,它本身的东西已经讲述完全了,如果再去讲述,那么就是这种动物的一个个体和另一个个体之间的部分了。

作为一个计算机科学与技术的高阶课程,计算机网络一班开设在大三或者大四,它的内容核心是如何使得数据在计算机之间有序的流通的。

因此,它除了对于“计算机网络”的定义和发展历程的介绍外,主要介绍的也是三个部分:核心概念、互联网协议和物理媒介,分别表述了计算机网络的虚拟表示、虚拟与现实结合处和物理实现。

6. 小结

以上只是介绍了计算机最核心的课程,但是一个计算机科学与技术专业的学生,不仅仅需要学习这些课程,他们还需要学习很多通识的前置课程,例如数学(高等数学、线性代数和概率论与数理统计)和物理(大学物理、电工电子、数电模电),也会学习大量的编程语言(C/C++, Python, Java, C#等)和其他特定领域的核心课程《数据库系统与原理》、《人工智能》、《嵌入式系统》、《自然语言处理》、《机器学习》等等。

在硕博阶段,计算机科学与技术则会更加精细到某一个特定的领域进行学习,这里就不展开叙述。

这也是为什么我一直强调,计算机科学与技术更像是一个中流砥柱,学的全,但每个部分都学的不深,毕竟其他专业的名字都可以只开设一门课程讲解例如《网络工程》、《软件工程》、《信息管理与信息系统》,但是计算机科学与技术专业从来没有一门课程可以学习,如果真的勉强算一下的话,可以是《大学计算机基础》。

因此,学习计算机科学与技术重点还是学习计算机思维,这才是内功。当然它也有很多外在表现,例如有的学生编程能力特别强、有些学生做的软件特别有用等等,这都是拥有计算机思维的表现。

猜你喜欢

转载自blog.csdn.net/qq_35082030/article/details/128512507