Computer Science Resources
Compilation of Computer Science courses, books, blog posts and videos.
- The Fundamentals (this list) - "classic" resources recommended to me by someone or popular in the internet. Focuses on the most fundamental and important concepts in Computer Science.
- Further Reading - short blog posts, articles from the internet, more specific resources. Less fundamental, more practical (and typically up-to-date).
- Periodic - resources to check ~monthly for new updates. This is mostly for newsletters and blogs that provide high-quality content.
Algorithms and Data Structures
-
📖 Introduction to Algorithms ("CLRS" — Cormen, Leiserson, Rivest, Stein, 2001) -
📖 The Algorithm Design Manual (Skienna, 2020) -
📖 The Art of Computer Programming (Donald Knuth) -
🔗 Algorithms for Modern Hardware -
🔗 CP-Algorithms — a translation of e-maxx (a Russian resource on Competitive Programming algorithms)
Distributed Systems
-
🎥 MIT Distribtued Systems (2020, +2021 Sprnig offering) -
🎥 Distributed Systems lecture series from Cambridge (shorter videos with the core concepts, 2020) -
🎥 Paxos & TLA+ Turing Award lectures (shorter videos with the core concepts, 2020) -
📖 Distributed Systems: Principles and Paradigms (Tanenbaum, 2006) -
📄 The Anatomy of a Large-Scale Hypertextual Web Search Engine ("The Google Paper", Brin, Page, 1998) -
📄 The Google Filesystem (2003) -
📄 MapReduce: Simplified Data Processing on Large Clusters (Jeffrey Dean and Sanjay Ghemawat, 2004) -
📄 The Chubby lock service for loosely-coupled distributed systems (2006) -
📄 Dremel: Interactive Analysis of Web-Scale Datasets (2010) -
📄 The Byzantine Generals Problem (Lamport et al., 1982) -
📄 The Part-Time Parliament ("The Paxos Paper", Lamport et al., 1998) -
📄 Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services ("The CAP Theorem" proof, 2002) -
📄 CAP Twelve Years Later: How the "Rules" Have Changed (2012) -
📄 In Search of an Understandable Consensus Algorithm ("The Raft Paper", 2014) -
🔗 System Design Primer
Databases
-
🎥 CMU's YouTube Channel- Andy Pavlo's Intro to Database Systems, (2022, lectures + assignments)
- Andy Pavlo's Advanced Database Systems (2020, lectures + assignments)
- Quarantine Database Talks (2020)
- Vaccination Database Talks (2021)
- Vaccination Database Talks: Second Dose (2021)
-
📖 Designing Data Intensive Applications (2015) -
📖 Architecture of a Database System (2017) -
📖 Readings in Database Systems ("The Red Book") -
📄 A Case for Redundant Arrays of Inexpensive Disks (RAID) (Patterson, 1988) -
📄 Bigtable: A Distributed Storage System for Structured Data ("The Bigtable Paper", 2006) -
📄 Spanner: Google's Globally-Distributed Database ("The Spanner Paper", 2012) -
📄 F1: A Distributed SQL Database That Scales ("The F1 paper", 2013)
Programming Languages
C++
-
📖 Effective C++ series by Scott Meyers -
📖 The C++ Programming Language (Stroustrup, 2013)
Functional Programming
-
📖 Haskell Programming from first principles (2018) -
📖 Category Theory for Programmers (2018)
Rust
-
📖 The Rust Programming Language — the official Rust introduction book -
🔗 rustlings (a set of exercises for learning Rust)
Go
-
📖 The Go Programming Language (2015)
Python
Systems Programming (Operating Systems, Low-Level Primitives, Hardware)
-
🎥 MIT's Operating System Engineering -
🎥 Computation Structures -
🎥 Introduction to Operating Systems -
🎥 "From NAND to Tetris" on Coursera -
📖 Computer Architecture (Hennessy and Patterson, 2006) -
📖 Modern Operating Systems by Tanenbaum (2001) -
📖 Reverse Engineering for Beginners -
📖 The Little Book of Semaphores -
📖 The UNIX Programming Environment (Kernighan, Rob Pike)
Compilers
-
📖 Compilers: Principles, Techniques, and Tools ("The Dragon Book", Aho, Sethi, Ullman, 1986) -
📖 Crafting Interpreters (2021) -
📖 Structure and Interpretation of Computer Programs ("SICP", 1996)
Networking
-
🎥 Introduction to Computer Networking (2019) -
🎥 +📖 Computer Networking: A Top-Down Approach (2019) -
📖 The Protocols (TCP/IP Illustrated) (1993)
Machine Learning
-
🎥 Natural Language Processing (Chris Manning at Stanford, 2019) -
📖 Reinforcement Learning, an Introduction (Richard Sutton, 2018) -
📖 Deep Learning (Ian Goodfellow, Yoshua Bengio, 2016) -
📖 Probabilistic Machine Learning: An Introduction (Murphy, expected 2022) -
📖 Probabilistic Machine Learning: Advanced Topics (Murphy, expected 2022) -
📖 Introduction to Information Retrieval (Chris Manning, 2008)
Miscellaneous
-
🎥 Performance Engineering of Software Systems (MIT, 2018) -
🎥 Computer Systems Security (MIT, 2014) -
🎥 Computer Systems Engineering (MIT, 2018) -
🎥 Machine Vision (MIT, 2020) -
🎥 Introduction to Computer Graphics (MIT, 2020) (+ assignments) -
📖 Concrete Mathematics: A Foundation for Computer Science (Graham, Knuth, Patashnik, 1994) -
📖 Code Complete (2004) -
📖 Domain-Driven Design (2003) -
📖 Test-Driven Development (2002) -
📖 Quantum Computing for the Very Curious (2019) -
📖 The Pragmatic Programmer (2019)