知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技  > 电脑

计算机基础学习顺序是什么?

发表时间:2022-03-25来源:网络

哈哈哈这题我太会了!

最近认真梳理了一个计算机的学习路径和学习计划,强烈建议想夯实计算机基础的、提高核心竞争力的同学点赞收藏一波~

看完本回答你将知道(建议收藏):

计算机科班最核心的课程,以及先后顺序CS基础课最优质的公开课如何成为一个计算机基础扎实的科班毕业生

(PS:本回答为 @编程指北 原创,禁止转载、抄袭、魔改,谢谢~

首先上一个计算机课程体系图,基本上国内大多数计算机类院系的课程安排都是基于这个图做一些修订,大同小异:

上面课程太多了,重点不突出,为此我选出了「专业基础课」和「专业必修课」:

我们学校上课的顺序基本和上面第二张图一样,个人觉得大概这样设置CS课程更为合理:

大一上:C/C++程序设计、高数1(初等微积分)、离散数学

大一下:数字逻辑、数据结构、汇编语言、面向对象编程(Java/C++)、高数2 、线性代数

大二上:软件工程、数据库、Java/Python Web开发、组成原理

大二下:操作系统、计算机网络、系统级编程(CSAPP)

大三:软件测试、软件安全、课程设计、密码学、图形学等选修方向

大四:实践、毕设、实习

那么我推荐的自学方式就是:

初学看视频提高看经典书 + 源码,附计算机必读经典书单:提高编码能力靠多写多做国外硬核的Lab

那么有哪些优质公开课推荐呢?

大学看过几十门公开课,几百小时的视频,大学主要就是靠 MOOC、B站,网易云公开课,这次我要把我看过的觉得非常好的课程推荐给大家。

如果你还在校大二大三,我真的墙裂建议你去做一些国外的计算机 lab,比如OS、Network。

等到毕业了,几乎就不太可能从头开始系统学习那些基础知识了,除非你能自己闭关两三年,啥也不做,待在一个地方专心修炼。

好好珍惜在学校大把的空闲时间,做一些让在专业上让自己受益一生的事情。

这里我可以列举几个,国内不少喜欢 System 的同学都会去跟 MIT、CMU、UCB 这些计算机名校的课程。

比如 MIT 的 6.824 Distributed System6.830 Database SystemsMIT 6.828 Operating System Engineering、CS 144 .....

话不多说,直接上干货:

(PS:大家记得收藏的时候,双击屏幕帮学长 @编程指北 点个赞呀!!只收藏不点赞的都是耍流氓,╭(╯^╰)╮

一、操作系统:

Operating System:

MIT6.828,现在改名了叫为6.S081,核心就是xv6实验,带你完成一个mini os:学堂在线上清华的操作系统,配套实验是UCore:哈工大李治军老师的操作系统,实验是基于 Linux 0.11,非常有趣:

我大三的时候基本看完了,讲得非常好,还会涉及到源码

可以看到除了一些《形式与政策》这种“水课”,其它都是CS基础课。 送大家一句话吧:

万丈高楼平地起,勿在浮沙筑高台。

所以一定要在大学期间把基础打牢固,整扎实,这是科班的核心竞争力!

而且非科班同学学完这些课,也可以说是科班了!

那么怎么学?

看书 + 看视频 + 实践

接下来推荐一些我觉得特别好的资料,尽量保持精简:

(PS: 哭了,大家只收藏不点赞,记得双击屏幕点个赞呀~~















一、编程语言:C/C++

没有比C语言更适合用来理解计算机系统了, 科班学生一定要学好 C语言。

推荐:《C程序设计语言》、《C与指针》、《C++ Primer》、《C++对象模型》、《Effective C++ 》

具体参考:

二、系统级编程

不用说肯定推荐《深入理解计算机系统》

其实它的简介和第一章《计算机系统漫游》已经写得非常清楚了:

从一个简单的hello world程序在计算机上的执行过程:

预处理->编译->汇编->链接->可执行文件->装载->数据流->屏幕输出显示

汇总成一句:信息 = 位+上下文。

另外还有一本就是《程序员自我修养》+ 《Unix环境编程》

(PS:双击屏幕可以点赞收藏,记得帮我点个赞哟~

具体参考:

三、数据结构与算法

《算法第四版》、《算法导论》、《剑指offer》

刷完基本面试找工作笔试面试都不怕了。

找工作的话,还需要刷大量的题,至少200道leetcode吧,在这里也送大家一本帮助我拿到BAT 等一线大厂 offer 的算法笔记,是一位阿里大神写的,对于算法薄弱或者需要提高的同学都十分受用,算法一定是计算机学习的重中之重:

BAT面试官编写的leetcode刷题笔记,看完秒杀80%的题目

具体参考:如何学习数据结构?

四、组成原理与体系结构

《计算机组成与设计:软硬件接口》、《编码》、《CSAPP》

五、操作系统

操作系统我推荐 看书 + 做lab的方式,比如 MIT6.828 xv6

书可以看《现代操作系统》,如果你想学个os,可以看《操作系统真象还原》

我当时应该是看了不少网课,然后自己跟着教程”抄了“一个 mini os。

学习操作系统一定不要去死看书,最好跟着那种有配套实验完成一个os的课程或者书。

就像这种:

具体参考:

六、计算机网络

推荐《计算机网络自顶向下》、《TCP/IP详解》

七、编译原理

直接看龙书就好了,想写脚本可以看看《自制脚本语言》


说实话,把上面这几门课学好了,国内大厂offer几乎随便拿了。

但是很多人忽视了基础,往往在大学最该打基础的时候去追求所谓的新技术。

所以不如谈谈到底「如何才能成为一个计算机知识体系完整的毕业生」吧?

在这里,我粗浅的把计算机编程领域的知识分为三个部分:

基础知识特定领域知识框架和开发技能

具体可以看下这个回答:

我推荐大家花在「基础 : 领域知识 : 技能」 接近 7 : 2 : 1。

这也是我推荐你在大学期间分配学习时间的比例,至少学习基础知识的时间不少于 50%,当然,这些东西你都学完了那可以去找找感兴趣的方向专研一下。

不要大一、大二一上来就扎进 Java Web、Python 爬虫这种东西,这些可以学,但不是重点。

这篇文章也没写到具体该如何去学,有哪些好的资料,由于篇幅限制,我准备把这个单独再写一个 《How 篇》,持续关注我哟~

那么如何检验学得如何呢?

想必你一定听说这个计网面试题:

“从 URL 输入到页面展现到底发生什么?“

这个问题换个表达就是「一个数据包是如何发送到另外一台电脑的」,如果你能完整的说出整个过程,那么计网你一定是学懂了!这就是为啥面试这么喜欢问这个问题的原因。

那么我们依葫芦画瓢提一个问题

“从代码被写下到程序运行起来到底发生了什么?”

这个问题回答得越详细越好,基本上能说清,你就理解了编译原理、操作系统、组成原理这三座大三。

如果觉得写得不错的话,记得帮我 @编程指北 点个赞哟

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜