自学计算机科学,推荐从这九大核心科目入手,结合经典教材和优质视频课程,系统掌握基础知识,奠定扎实的技术根基:
• 编程:《计算机程序的构造和解释》(SICP),配合 Brian Harvey 的 Berkeley CS 61A 课程,深入理解递归等核心概念,告别“似懂非懂”。
• 计算机系统结构:推荐《深入理解计算机系统》(CS:APP),辅以 Berkeley CS 61C,帮助你构建从硬件到软件的完整认知;入门者也可选《计算机系统要素》(Nand2Tetris),通过项目实操理解计算机内部协作机制。
• 算法与数据结构:《算法设计手册》是实用主义者的首选,Steven Skiena 的视频课程生动易懂;搭配 Leetcode 练习,提升实际问题解决能力。
• 数学基础:计算机科学离不开离散数学,首选 Lovász 的课程笔记及 MIT 的《计算机科学中的数学》视频课程,线性代数则推荐“Essence of Linear Algebra”系列和 Gilbert Strang 教授的经典教材。
• 操作系统:《操作系统导论》(OSTEP)免费且结构清晰,适合自学;后续可深入阅读 Unix、FreeBSD、Mac OS X 内核设计等专业书籍,实践可选 MIT 的 xv6 小型操作系统代码。
• 计算机网络:推荐《计算机网络:自顶向下方法》和 Stanford CS 144 课程,注重项目实操,理解网络协议和架构。
• 数据库:先看 Berkeley CS 186 课程录像,辅以“数据库红书”论文集,强化理论基础。推荐《数据库管理系统:原理与设计》作为入门教材,进一步可读 Jim Gray 的经典著作。实践建议自行实现简单关系数据库,理解底层机制。
• 编程语言与编译器:Bob Nystrom 的《Crafting Interpreters》活泼且系统,适合初学;经典“龙书”《编译原理》则适合有导师指导的深入学习。EdX 上 Alex Aiken 的课程是极佳配套资源。
• 分布式系统:Martin Kleppmann 的《数据密集型应用系统设计》为实用导向佳作,MIT 6.824 课程视频免费开放。建议结合阅读经典论文和参与社区(如 Papers We Love)加深理解。
如果时间有限,重点推荐《深入理解计算机系统》和《数据密集型应用系统设计》两本书,投入回报极高,特别适合自学工程师。
学习计算机科学,助你成为能够驾驭底层原理、解决复杂问题的工程师,而非仅会使用工具的“跟风者”。掌握基础,职业成长自然水到渠成。
了解详情与资源链接👉 teachyourselfcs.com
中文版:github.com/izackwu/TeachYourselfCS-CN/blob/master/TeachYourselfCS-CN.md
自学计算机科学 计算机基础 程序设计 系统架构 算法与数据结构 操作系统 计算机网络 数据库 编译原理 分布式系统