一份极具价值的高水准计算机科学自学指南

如果你是一名自学成才的计算机工程师或职业培训班的毕业生,有些计算机科学基础课程是你必须要补齐的。幸好,你通过互联网就能获得世界顶级的 CS(计算机科学)课程。

互联网上的学习资源有很多,如何选择有价值的学习资源?应该学习哪些主要课程?每个科目的最佳书籍或者视频讲座系列是什么?

这份计算机科学自学指南能帮你厘清方向,消除困惑。

计算机自学

课程指南

1.1 程序设计

大多数的 CS 本科课程都是从介绍计算机编程开始的。适合初学者学习的推荐 Structure and Interpretation of Computer Programs 这本书,这本书可免费在线获取。也可以看MIT计算机科学系列视频讲座,这些讲座很棒,但对于初学者建议学习伯克利大学 Brian Harvey 的 SICP 课程(对应伯克利的61A课程)。与麻省理工学院的讲座相比,这些课程更加精致,更适合新生。建议至少学完 SICP 的前三章,并把练习题做完。如果你觉得 SICP 的课程太难,可以选择 How to Design Programs。

1.2 计算机系统结构

计算机系统结构是最容易被自学者忽略的,但是它其实非常重要。推荐 The Elements of Computing Systems 这本书,建议至少看完前 6 章并完成相应的作业。不过这本书并不是完全免费,因此也可以选择伯克利大学的 CS61C 课程:Great Ideas in Computer Architecture,而且可以下载之前的讲义。

1.3 算法和数据结构

学好算法和数据结构,将有助于培养你解决问题的能力。推荐 The Algorithm Design Manual 这本书,如果你想看配套的视频资源可在线免费获取。这本书的作者很慷慨把这本书的配套视频免费共享到了网上。如果你想练习算法问题,则可以选择刷 Leetcode,上面汇集了对算法话题的讨论和解决答案。作为学习的一部分建议解决大约100个随机leetcode问题。

1.4 数学

虽然很多人对畏惧数学,但是“计算机之父”冯·诺依曼曾经说过:如果人们不相信数学有多简单,那是因为他们没意识到生活有多复杂。跟计算机最相关的数学知识当属“离散数学”以及“线性代数”。如果你想学好离散数学,可以阅读匈牙利的数学家 László Lovász 关于离散数学的课程讲义。如果你还想更进一步,则可以选择麻省理工的 Mathematics for Computer Science,而且有配套的视频课程。至于线性代数,则建议从 Essence of linear algebra 视频系列开始,然后是麻省理工的相关视频课程。

1.5 操作系统

Operating System Concepts (恐龙书)和 Modern Operating Systems,是操作系统的“经典”书籍。两者都因其写作风格而受到批评,而且每隔几年就会成为长达1000页的教科书,这里给大家推荐一本免费的作为替代:Three Easy Pieces。这本书的结构非常适合练习。巩固对操作系统理解的一个好方法是阅读小内核的代码并添加功能。一个很好的选择是xv6,一个Unix V6到ANSI C的端口,以及麻省理工学院的主修课程x86。

1.6 计算机网络

计算机网络是 CS 学科里最有价值的领域之一。推荐 Computer Networking: A Top-Down Approach 这本书以及搭配的练习题。你也可以选择斯坦福的在线课程:Introduction to Computer Networking。想要学好计算机网络,最重要的是多做项目。

1.7 数据库

自学数据库还是比较难的。建议自学者不要直接看教材,而是通过在线视频来学习,比如伯克利的 CS168 课程。那些想了解 RDBMS(关系型数据库管理系统)的读者,一定要看一下 Architecture of a Database System 这篇论文。此外,Readings in Database Systems 也值得一读。对于更高级的学生,Jim Gray的经典书籍 Transaction Processing: Concepts and Techniques是值得的一读的,但不鼓励初学者将其用作为首要学习资源。最后,数据建模是使用数据库时被忽视且教学不足的方面。关于该主题的建议书籍是Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World.

1.8 计算机语言和编译器

对于自学者,推荐斯坦福的在线课程:Compilers。关于练手项目,建议编写一个编译器,建议你从 Make a Lisp 开始,它将引导您完成整个项目。

1.9 分布式系统

分布式系统是一个快速变化的领域,没有任何教科书可以作为试用指南,但Maarten van Steen是市面上看到的最好的自学教材。分布式系统的自学教材可以选择 Distributed Systems, 3rd Edition,而且是免费的。同时你也可以选择麻省理工的在线课程:6.824。无论选择哪种自学资源,分布式系统的研究绝对要求阅读论文。这里 [http://dsrg.pdos.csail.mit.edu/papers/] 准备了一份论文清单,供你参考。

下面给出了计算机科学自学指南的网站,文中给出了每个科目自学参考资料的所有链接地址。你可以根据自己的实际情况选择合适的自学材料。

自学指南: https://teachyourselfcs.com

来了,老弟
-------------    本文结束  感谢您的阅读    -------------
0%