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 协议


第五部分 总结

第六部分 问答环节