awesome-learning-resources icon indicating copy to clipboard operation
awesome-learning-resources copied to clipboard

收集最优质的学习资料。专治“学习资料不足恐惧症”。

最优质的学习资料

本项目收集最优质的计算机科学学习资料

收录的依据主要是:在领域内的经典程度、作者权威性、推荐者的数量、推荐者的权威性、豆瓣评分和评价。不放心的同学可以在阅读之前在 Google、豆瓣、知乎 搜索相关的评价。

专治“学习资料不足恐惧症”。

本项目将持续更新。如果这个项目有幸帮助到了你,加个 Star 吧!

快速开始

在进行全面的资料列举之前,我想提醒读者:“过于丰富”的资料清单可能会造成畏惧或者自满的心态,真正开始学习才是提升自己的第一步。

如果你不想花费时间在挑选和犹豫上,那么本小节为你总结了几本最值得投入精力的书,以便你快速开始

目录

  • 最优质的学习资料
  • 快速开始
  • 目录
  • 程序设计思想和编程语言
  • 计算机体系结构
  • 算法与数据结构
  • 操作系统理论
  • 计算机网络
  • 数据库
  • 分布式系统
  • 编译原理
  • 操作系统实践(Linux 运维)
  • UNIX 编程
  • 工程化
    • GIT
    • 软件工程
    • 大型软件的设计思想
  • 程序员的自我修养
  • C/C++
  • Python
  • Java
  • 编程实践
  • 前端
  • 机器学习
    • TensorFlow
    • PyTorch
  • 数学基础
    • 线性代数
    • 概率与统计
    • Optimization (优化理论)
  • 计算理论
  • 信息论
  • 杂项
    • Vim
    • 清单
    • 公开课

程序设计思想和编程语言

回到目录 ↑

建立对计算机和编程的基本认识。

【实用的、补充性的学习材料】,用于入门时的对照参考:

计算机体系结构

回到目录 ↑

计算机底层运行机制。计算机如何执行我们编写的程序。

【实用的、补充性的学习材料】,用于入门时的对照参考:

算法与数据结构

回到目录 ↑

  • Algorithms(算法概论) 相对于 Introduction to Algorithms 和 Algorithms,这本书很薄,但是它的讲解简单优美有趣,适合初学者。
  • Algorithms 每个开发者必知必会的数据结构和算法。也是经典教材,评价很高。相比于 Introduction to Algorithms,这本书是从开发者的需要出发,介绍那些实用的算法,相对易懂;而 Introduction to Algorithms 是更加系统、深入地研究算法理论。配套网站中包含了算法精讲以及习题答案。
  • Introduction to Algorithms 推荐率最高的算法书。经典、全面、深入。它的难度和容量可能有点大,不适合入门者。不适合以“解决问题”为导向的学习,适合以“算法研究”为导向的学习。
  • 编程珠玑。相对较薄的一本书。本书并没有系统地归纳各种算法,而是通过一些精心设计的有趣而又颇具指导意义的程序实例,引导读者理解问题、选择和实现算法。
  • 编程之美 面试的经典问题,引发读者思考,领略算法的乐趣。
  • 算法竞赛入门经典 与前面的算法书相比,它的实用性非常强,是一本“解题”的教材,适合学生学习算法(刷题)入门。真希望自己在高中阶段就了解到这本书,开启编程(竞赛)的大门。。。

操作系统理论

回到目录 ↑

计算机网络

回到目录 ↑

数据库

回到目录 ↑

  • Berkeley CS186 由于数据库学习有很强的商业价值,因此该领域比较少人编写传统教材(牛人都忙着挣钱)。自学数据库,比较适合看这门课程视频入门,然后阅读下面的进阶资料。
  • Architecture of a Database System 一篇梗概性论文,提供了独特的对关系型数据库管理系统(RDBMS)如何工作的高层次观点,是后续学习的实用梗概。
  • Readings in Database Systems 又称“数据库红书”,数据库领域的经典论文合集。时效性很高。
  • 数据库管理系统原理与设计 数据库教材。比较老但是非常经典。

上述数据库经典资料推荐都来自Teach Yourself Computer Science

大数据处理

分布式系统

回到目录 ↑

编译原理

回到目录 ↑

操作系统实践(Linux 运维)

回到目录 ↑

UNIX 编程

回到目录 ↑

工程化

回到目录 ↑

GIT

软件工程

大型软件的设计思想

这个主题可能更适合拥有一定编程经验以后再阅读,结合自己的编程经验才能有深刻的理解。

程序员的自我修养

回到目录 ↑

程序员相关

哲学

数学和自然科学

人文社科

生活的智慧

C/C++

回到目录 ↑

更多的资料直接看下面的链接或者上知乎搜索。

Python

  • The Hitchhiker’s Guide to Python! google 搜索 Python guide,前四位都是它或它的中文翻译。GitHub 仓库的 Star 数量很多。定位是"Python best practices guidebook"。
  • Fluent Python 豆瓣评分最高的 Python 书籍。比较适合进阶。

Rust

  • The Rust Programming Language Rust 官方推荐教材。详尽涵盖了 Rust 的理论基础。最好结合下面实践资料一起学习。
  • Rust by Example Rust 官方出品的在线练习网站,通过练习来巩固这门语言的知识点。
  • rustlings Rust 官方出品的小练习,帮助你熟悉 Rust 编程,包括代码读、写,以及 Rust 编译器的使用,实践性教程。
  • Rust Language Cheat Sheet Rust 语言的备忘清单,非常适合随时翻阅。在保持简练的同时,兼具了不错的深度和广度。

Java

回到目录 ↑

编程实践

回到目录 ↑

  • pytudes Peter Norvig 设计的一系列编程问题。相比于在Leetcode刷到的题目,这里的问题更能锻炼解决实际问题的能力。并且 Peter Norvig 亲自给出详细的思考引导和解答,相当于世界钢琴大师教你学习钢琴。

前端

回到目录 ↑

JavaScript 开发进阶

v8

前端杂项

Angular

官方文档就不需要提了,这里只列举用于进阶的资料。

机器学习

回到目录 ↑

书籍:

其它机器学习书单:人工智能入门书单(附 PDF 链接)

实战向书籍:

课程:

其他机器学习资源合集:

  • Awesome Machine Learning 机器学习的 Awesome List,Star 数超高。README 按照语言分类,列举各个语言下的机器学习工具(这个列表是应该是为专业人员建立的),非常完备,但是更适合已经入门者。其他文档分别推荐了博客、书籍、公开课、会议。
  • Machine learning Resources 收集机器学习资源的 GitHub 仓库,列举了很多入门资料。
  • Deep Learning Papers Reading Roadmap 这个 repository 收集了深度学习各个领域中最基础、重要的研究论文,进阶者可以从这里入手。star 数量很高。
  • Distill Distill 是一个期刊平台,使用了交互式、视觉化的用户界面,注重对机器学习研究成果的理解与诠释。
  • deeplearning.net 给出了很多基础性的论文。

相关知乎问题:机器学习该怎么入门? - 知乎 普通程序员如何正确学习人工智能方向的知识? - 知乎 深度学习如何入门? - 知乎 YouTube 上有哪些计算机方面的值得推荐的公开课? - 知乎

  • deepo 轻松在 Docker 上搭建开发环境。
  • Convolution arithmetic 用 动图+论文 详细解释了卷积和逆卷积的过程。

TensorFlow

PyTorch

数学基础

回到目录 ↑

线性代数

概率与统计

微积分

Optimization (优化理论)

深入学习机器学习的同学可能需要关注这个领域。相关推荐里少不了这两本:

  • Convex Optimization. Stephen Boyd, 2004, Cambridge university press.
  • Numerical Optimization. Nocedal, J. Wright, S. 2006, Springer.

计算理论

回到目录 ↑

数理逻辑、形式语言与自动机理论、可计算性理论、计算复杂性理论等。

信息论

回到目录 ↑

课程视频:

杂项

回到目录 ↑

Vim

  • Learn-Vim 教程类型,适合跟着学习。
  • vim-galore 手册类型,适合复习查阅。
  • vscode-vim-book vim教程,面向vscode用户(vscode可以通过安装插件来支持vim特性)。如果你主要使用vscode,那么直接看它就可以了。

清单

公开课