computer-science-resources
computer-science-resources copied to clipboard
collection of interesting Computer Science resources
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)
- [ ] 🔗 raft.gitghub.io
- [ ] 🔗 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
- [x] 📖 The Rust Programming Language — the official Rust introduction book
- [x] 🔗 rustlings (a set of exercises for learning Rust)
Go
- [ ] 📖 The Go Programming Language (2015)
Python
- [ ] 📖 Fluent 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)
- [ ] 📖 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)
- [x] 📖 The Pragmatic Programmer (2019)