The Computer Science curriculum tends to be focused on teaching the theoretical basics. For many people who are new to the subject, it can be unclear how to get started, either as a student, transitioning into the tech field for a new career, or just for self-study.
For the career path, there can be specific bootcamps as well as very practical books on the subject. For the university path, those mostly consist of textbooks. This post provides a "short" list of the well-known textbooks on each subject as well as one free textbook for those who don't want to commit to buying an expensive textbook.
Following the list of free CS classes at OSSU, the books are presented with the free option first followed by the well-known textbooks roughly in order of difficulty.
Discrete Mathematics
- (Free PDF) Discrete Mathematics: An Open Introduction by Oscar Levin
- (Free PDF) Mathematics for Computer Science by Lehman, Leighton, Meyer
- (Standard) Discrete Mathematics and Its Applications by Kenneth Rosen
- (Hard) Concrete Mathematics: A Foundation for Computer Science by Graham, Knuth, Patashnik
Linear Algebra
- (Free PDF) Linear Algebra by Jim Hefferon
- (Standard) Introduction to Linear Algebra by Gilbert Strang
Computer Architecture
- Computer Organization and Design (6th Edition comes in MIPS and ARM versions) by Hennessy and Patterson
- Computer Architecture: A Quantitative Approach by Hennessy and Patterson
Operating Systems
- (Free Online) Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
- Operating System Concepts by Silberschatz, Galvin, Gagne
- Modern Operating Systems by Tanenbaum, Bos
Networking
- (Free) An Introduction to Computer Networks by Peter Dordal
- (Free PDF) TCP/IP Tutorial and Technical Overview (IBM Redbook)
- Computer Networking: A Top-Down Approach by Kurose, Ross
- (Special) TCP/IP Illustrated, Volumes 1-3 by W.Richard Stevens, et al.
Analysis of Algorithms
- (Free) Algorithms by Jeff Erickson
- (Free Online) Algorithms by Sedgewick, Wayne
- The Algorithm Design Manual by Steven Skiena
- Introduction to Algorithms by Cormen, Leiserson, Rivest, Stein
- (Hard, Special) The Art of Computer Programming, Volumes 1 through 4A by Donald Knuth
- This series gets special mention as "The Bible" of theoretical computer science
Databases
- A First Course in Database Systems by Ullman, Widom
- Database Systems: The Complete Book by Garcia-Molina, Ullman, Widom
Artificial Intelligence/Machine Learning
- (Free PDF) Understanding Machine Learning: From Theory to Algorithms by Shalev-Shwartz, Ben-David
- Artificial Intelligence: A Modern Approach by Russell, Norvig
Computer Graphics
- (Free Online/PDF) Introduction to Computer Graphics by David Eck
- Fundamentals of Computer Graphics by Marschner, Shirley
- Computer Graphics: Principles and Practice by Hughes, Van Dam, McGuire, Sklar, Foley, Feiner, Akeley
Complexity Theory
- (Free PDF) Introduction to Theory of Computation by Maheshwari, Smid
- Introduction to the Theory of Computation by Michael Sipser
Compilers
- (Free Online) Crafting Interpreters by Robert Nystrom
- Engineering a Compiler by Cooper and Torczon
- Building an Optimizing Compiler by Bob Morgan
Programming Languages
- Concepts of Programming Languages by Robert Sebesta
- Concepts in Programming Languages by John Mitchell
- Foundations for Programming Languages by John Mitchell
Computer Security
- Computer Security: Principles and Practice by Stallings, Brown
Special: Distributed Systems
- (Free PDF) Notes from Yale's CPSC 465: Theory of Distributed Systems
- Distributed Systems: Principles and Paradigms by Tanenbaum, Van Steen
Special: Data Science and Machine Learning
- (Free Online) Dive Into Deep Learning
- (Free Online and PDF) Mining of Massive Datasets, 3rd Edition