|
17 | 17 |
|
18 | 18 | 大致按照列出的顺序,借助我们所建议的教材或者视频课程(但是最好二者兼用),学习如下的九门科目。目标是先花100到200个小时学习完每一个科目,然后在你职业生涯中,不时温习其中的精髓🚀。
|
19 | 19 |
|
20 |
| -| 科目 | 为何要学? | 最佳书籍 | 最佳视频 | |
21 |
| -| --- | --- | --- | --- | |
22 |
| -| **[编程](#编程)** | 不要做一个“永远没彻底搞懂”诸如递归等概念的程序员。| _[《计算机程序的构造和解释》](https://book.douban.com/subject/1148282/)_ | Brian Harvey’s Berkeley CS 61A | |
23 |
| -| **[计算机架构](#计算机架构)** | 如果你对于计算机如何工作没有具体的概念,那么你所做出的所有高级抽象都是空中楼阁。 | _[《计算机组成与设计》](https://book.douban.com/subject/26604008/)_ | Berkeley CS 61C | |
24 |
| -| **[算法与数据结构](#算法和数据结构)** | 如果你不懂得如何使用栈、队列、树、图等常见数据结构,遇到有难度的问题时,你将束手无策。| _[《算法设计手册》](https://book.douban.com/subject/4048566/)_ | Steven Skiena’s lectures | |
25 |
| -| **[数学知识](#数学知识)** | 计算机科学基本上是应用数学的一个“失控的”分支,因此学习数学将会给你带来竞争优势。| _[《计算机科学中的数学》](https://book.douban.com/subject/33396340/)_ | Tom Leighton’s MIT 6.042J | |
26 |
| -| **[操作系统](#操作系统)** | 你所写的代码,基本上都由操作系统来运行,因此你应当了解其运作的原理。 | _[《操作系统导论》](https://book.douban.com/subject/33463930/)_ | Berkeley CS 162 | |
27 |
| -| **[计算机网络](#计算机网络)** | 互联网已然势不可挡:理解工作原理才能解锁全部潜力。 | _[《计算机网络:自顶向下方法》](https://book.douban.com/subject/26176870/)_ | Stanford CS 144 | |
28 |
| -| **[数据库](#数据库)** | 对于多数重要程序,数据是其核心,然而很少人理解数据库系统的工作原理。 | _[《Readings in Database Systems》](https://book.douban.com/subject/2256069/) (暂无中译本)_ | Joe Hellerstein’s Berkeley CS 186 | |
29 |
| -| **[编程语言与编译器](#编程语言与编译器)** | 若你懂得编程语言和编译器如何工作,你就能写出更好的代码,更轻松地学习新的编程语言。| _[《编译原理》](https://book.douban.com/subject/3296317/)_ | Alex Aiken’s course on Lagunita | |
30 |
| -| **[分布式系统](#分布式系统)** | 如今,_多数_ 系统都是分布式的。 | _《分布式系统原理与范型》([中文第二版](https://book.douban.com/subject/3108801/),[英文第三版](https://book.douban.com/subject/26979326/))_ | 🤷 | |
| 20 | +| 科目 | 为何要学? | 最佳书籍 | 最佳视频 | |
| 21 | +|-------------------------------------------|----------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------| |
| 22 | +| **[编程](#编程)** | 不要做一个“永远没彻底搞懂”诸如递归等概念的程序员。 | _[《计算机程序的构造和解释》](https://book.douban.com/subject/1148282/)_ | Brian Harvey’s Berkeley CS 61A | |
| 23 | +| **[计算机架构](#计算机架构)** | 如果你对于计算机如何工作没有具体的概念,那么你所做出的所有高级抽象都是空中楼阁。 | _[《计算机组成与设计》](https://book.douban.com/subject/26604008/)_ | Berkeley CS 61C | |
| 24 | +| **[算法与数据结构](#算法和数据结构)** | 如果你不懂得如何使用栈、队列、树、图等常见数据结构,遇到有难度的问题时,你将束手无策。 | _[《算法设计手册》](https://book.douban.com/subject/4048566/)_ | Steven Skiena’s lectures | |
| 25 | +| **[数学知识](#数学知识)** | 计算机科学基本上是应用数学的一个“失控的”分支,因此学习数学将会给你带来竞争优势。 | _[《计算机科学中的数学》](https://book.douban.com/subject/33396340/)_ | Tom Leighton’s MIT 6.042J | |
| 26 | +| **[操作系统](#操作系统)** | 你所写的代码,基本上都由操作系统来运行,因此你应当了解其运作的原理。 | _[《操作系统导论》](https://book.douban.com/subject/33463930/)_ | Berkeley CS 162 | |
| 27 | +| **[计算机网络](#计算机网络)** | 互联网已然势不可挡:理解工作原理才能解锁全部潜力。 | _[《计算机网络:自顶向下方法》](https://book.douban.com/subject/26176870/)_ | Stanford CS 144 | |
| 28 | +| **[数据库](#数据库)** | 对于多数重要程序,数据是其核心,然而很少人理解数据库系统的工作原理。 | _[《Readings in Database Systems》](https://book.douban.com/subject/2256069/) (暂无中译本)_ | Joe Hellerstein’s Berkeley CS 186 | |
| 29 | +| **[编程语言与编译器](#编程语言与编译器)** | 若你懂得编程语言和编译器如何工作,你就能写出更好的代码,更轻松地学习新的编程语言。 | _[《编译原理》](https://book.douban.com/subject/3296317/)_ | Alex Aiken’s course on Lagunita | |
| 30 | +| **[分布式系统](#分布式系统)** | 如今,_多数_ 系统都是分布式的。 | _《分布式系统原理与范型》([中文第二版](https://book.douban.com/subject/3108801/),[英文第三版](https://book.douban.com/subject/26979326/))_ | 🤷 | |
31 | 31 |
|
32 | 32 | ## 为什么要学习计算机科学?
|
33 | 33 |
|
@@ -80,7 +80,7 @@ _[《计算机系统要素》](https://book.douban.com/subject/1998341/)_,又
|
80 | 80 | > 硬件是平台。
|
81 | 81 | >
|
82 | 82 | > — Mike Acton, Engine Director at Insomniac Games
|
83 |
| -([观看他在CppCon上的演说](https://www.youtube.com/watch?v=rX0ItVEVjHc)) |
| 83 | +> ([观看他在CppCon上的演说](https://www.youtube.com/watch?v=rX0ItVEVjHc)) |
84 | 84 |
|
85 | 85 | ### 算法与数据结构
|
86 | 86 |
|
@@ -171,7 +171,8 @@ _[《Readings in Database Systems》](https://book.douban.com/subject/2256069/)_
|
171 | 171 |
|
172 | 172 | 对于项目练习,我们建议为诸如COOL的简单教学语言或者你所感兴趣的某个语言的一个子集写一个编译器。如果感觉这样的项目让人生畏,可以先从[Make a Lisp](https://github.com/kanaka/mal)开始,在一步步的指引下完成项目。
|
173 | 173 |
|
174 |
| -[ ](https://book.douban.com/subject/3296317/) [](https://book.douban.com/subject/10482195/) |
| 174 | +[](https://book.douban.com/subject/3296317/) |
| 175 | +[](https://book.douban.com/subject/10482195/) |
175 | 176 |
|
176 | 177 | > 不要做一个只写样板代码的程序员。相反,给用户和其他程序员创造工具。从纺织工业和钢铁工业中学习历史教训:你想制造机器和工具,还是操作这些机器?
|
177 | 178 | >
|
|
0 commit comments