Files
TeachYourselfCS-CN/TeachYourselfCS-CN.md
2019-10-05 16:38:07 +08:00

2.9 KiB
Raw Blame History

自学计算机科学

如果你是一个自学成才的工程师,或者从编程培训班毕业,那么你很有必要学习计算机科学。幸运的是,不必为此花上数年光阴和不菲费用去攻读一个学位:仅仅依靠自己,你就可以获得世界一流水平的教育💸

互联网上到处都有许多的学习资源然而精华与糟粕并存。你所需要的的不是一个诸如“200+免费在线课程”的清单,而是以下问题的答案:

  • 你应当学习哪些科目,为什么?
  • 对于这些科目,最好的书籍或者视频课程是什么?

在这份指引中,我们尝试对这些问题做出确定的回答。

简而言之

大致按照列出的顺序借助我们所建议的教材或者视频课程但是最好二者兼用学习如下的九门科目。目标是先花100到200个小时学习完每一个科目然后在你职业生涯中不时温习其中的精髓🚀

科目 为何要学? 最佳书籍 最佳视频
编程 不要做一个“永远没彻底搞懂”诸如递归等概念的程序员。 《计算机程序的构造和解释》 Brian Harveys Berkeley CS 61A
计算机架构 如果你对于计算机如何工作没有具体的概念,那么你所做出的所有高级抽象都是空中楼阁。 《计算机组成与设计》 Berkeley CS 61C
算法与数据结构 如果你不懂得如何使用栈、队列、树、图等常见数据结构,遇到有难度的问题时,你将束手无策。 《算法设计手册》 Steven Skienas lectures
数学知识 计算机科学基本上是应用数学的一个“失控的”分支,因此学习数学将会给你带来竞争优势。 《计算机科学中的数学》 Tom Leightons MIT 6.042J
操作系统 你所写的代码,基本上都由操作系统来运行,因此你应当了解其运作的原理。 《操作系统导论》 Berkeley CS 162
计算机网络 互联网已然势不可挡:理解工作原理才能解锁全部潜力。 《计算机网络:自顶向下方法》 Stanford CS 144
数据库 对于多数重要程序,数据是其核心,然而很少人理解数据库系统的工作原理。 Readings in Database Systems (暂无中译本) Joe Hellersteins Berkeley CS 186
编程语言与编译器 若你懂得编程语言和编译器如何工作,你就能写出更好的代码,更轻松地学习新的编程语言。 《编译原理》 Alex Aikens course on Lagunita
分布式系统 如今,多数 系统都是分布式的。 《分布式系统原理与范型》,第三版 Maarten van Steen著 🤷