知乎 Live - 如何自学计算机专业课程?
Oct 7, 2018
live 地址:https://www.zhihu.com/lives/837669764146003968
完整的 ppt [地址]:戳这里
第一部分 计算机专业的自学路线图
1. 为什么要去啃枯燥抽象难懂的计算机专业课程?
- 更好的职业发展
- 更加扎实的基础让工作更轻松
- 从知识原理中找到乐趣
如何提升自己的核心竞争力?
- 语言、框架都是外功招式,计算机基础是内功,练好内功,事半功倍
- 内功往往很难修炼,学习计算机专业课程可以训练思维能力
2. 计算机专业都学了什么课程?
必修+选修,各大学的骨干核心课程都差不多,尤其是“四大天王”——计算机组成原理、数据结构和算法、操作系统、计算机网络
计算机课程学习路线
- 明确自己学习计算机课程的目的(这一点很重要,这一点决定了你的动力来源,学习方法)
- 设定清晰的目标,目标越明确越好
- 从科普、概论入手,从感性认识开始,基础知识和编程实践并行,最后再具体深入某个领域
第二部分 学习之道
1. 一些观点和建议
金老师推荐了芭芭拉·奥克利写的《学习之道》这本书。
学习的过程是联想、连接的过程,如果学过的知识没有关联起来,很快就会忘了。
适当的休息和及时整理,可以让信息有条理,并且让信息彼此之间连接的更紧密。
2. 有效学习的基本原则
- 学习必须循序渐进,并且通常需要多次反复
- 学习需要高度可控、即时反馈和一个进度条
- 学习需要明确目标,不同的目标导致不同的学习策略
3. 高效学习要遵循人的认知规律
- 从感性到理性
- 从具体到抽象
- 理论必须通过实践才能真正学好
4. 知识网络、知识体系
学习的过程,是建立新知识和已有知识网络的连接。
通过有效学习,我们收获的是构成网络的知识,也就是形成了知识体系,而不是零散的。
孤立的知识点,很快就忘记了,连接成网的知识才是有效的知识。
5. 计算机技术学习的分层理论:你真正需要深入学习的只有“N+1”和“N-1”层
吾生也有涯,而知也无涯。
- 人的精力有限,而知识是无限的,我们在学习知识时要学会抓重点
- 计算机领域的知识时分层的
- 当你主要在第 N 层工作时,通常只需要对第 N-1 和 N+1 层下功夫,就足以应付日常的工作和学习任务了,越偏离你的日常工作,所需要投入的精力就越少
6. 学习没有银弹
- 不存在万能学习法
- 具体的学习方法视个人情况而定,关键是要找到适合自己的学习方法
- 学会自学,终身学习
第三部分 读书之道
1. 选择书籍的原则和方法
- 选择适合于自己当前水平的书读
- 选择那些你已经具备读懂前提的书读
- 阅读科普书籍入门、通过学习专业教材掌握基础,通过技术书籍深入特定领城
- 尽量阅读最新的英文版,或者中英文对照着看
- 目的决定阅读方法
2. 分类读书法
不同的书有不同的特点、难度,适合不同的人、阶段去阅读,所以要根据自己的情况选择合适的书。
3. 多遍阅读法
4. 如何应对难书和厚书?
第四部分 特定计算机专业课程学习建议
1. 数学
1.1 必须要学的知识
1.2 推荐教材
1.3 学习窍门
- 确定学习的具体目的
- 只需要理解数学概念,看懂数学公式,会应用
- 掌握数学的思想与分析方法,牛人们是如何用数学去解决实际问题的,比如非对称加密的公钥私钥
- 遵循认知规律
- 从易到难
- 从感性到理性
- 从具体到抽象
2. 概论
作用:概论这类书就像地图一般,帮你建立全局观。
2.1 推荐教材
- 《计算机科学概论》
- 《深入理解计算机系统》(不建议初学者阅读)
2.2 建议
- 有些老旧过时的知识可以选择跳过
- 学过计算机概论之类的之后,再去有针对性地选择具体的领域去深入学习
3. 数据结构和算法
3.1 学习路线
3.2 推荐教材
3.3 一些建议
- 用自己熟悉的语言实现一遍
- 可以读一读语言的标准库的源码
4. 计算机组成原理
4.1 学习路线和推荐教材
4.2 建议
- 非常推荐从《编码》这本书开始
- 对于大多数人来说,看完《编码》后,从《计算机组成原理》和《计算机组成与设计》这两本书中二选一就行了
5. 操作系统
几乎每一个程序员都要跟操作系统打交道。
5.1 学习路线
5.2 推荐教材
5.3 学习建议
- 学习操作系统前要学好 C 语言
- 要将操作系统和软件开发、动手实践联系起来
- 学习操作系统的关键就是,理解操作系统的内部机理,推荐使用 C 语言去做实验
- 开发应用时会涉及到socket、多线程、多进程,结合操作系统的原理去理解,学好操作系统,对应用开发非常有帮助
- 对于多数人来说,没有必要深入到源代码级别
6. 计算机网络
6.1 学习路线
6.2 推荐教材
6.2 学习建议
- 重点理解分层,各层的作用是什么,解决了什么问题
- 学习时一定要动手,学习使用编程语言的网络库做东西,学会使用抓包工具
- 重点学习 HTTP 协议以及 TLS,其次是 TCP 协议