glimmer

So, You Want to Learn Computer Science?

This list inspired by my own college days along with the wonderful "Teach Yourself CS" website. Only has undergrad material since I never went further past that level myself. List is ordered in the way you should read the books; not a ranking. Please note that Computer Science != Software Engineering/Development, though there is of course some overlap between the two.

If I were a CS student today (as of 2025), I'd learn Python as a high-level general language (including OOP; I think Java sucks) and Rust for lower-level MEMORY SAFE systems programming (along with exposure to C for contrast; you cannot escape C -especially for OS and compilers- and every CS student needs to experience the joys of SEGFAULT at least once in their lives). You'd do well in learning how to write bash scripts and use the CLI also, just from a practical standpoint. Considering that Data Science, ML, and AI are all the rage these days, I've also added some 300-400 level texts for those too.

Position
Details
Rating
Readers Count
Controls
#1
Cover 3

Python Crash Course

Python Crash Course: A Hands-On, Project-Based Introduction to Programming
  • Eric Matthes
51 read
#2
Think Python: How to Think Like a Computer Scientist
Think Python: How to Think Like a Computer Scientist
  • Allen B. Downey
00 reads
#3
Code: The Hidden Language of Computer Hardware and Software
Code: The Hidden Language of Computer Hardware and Software
  • Charles Petzold
4.2862 reads
#4
How to Design Programs: An Introduction to Programming and Computing
How to Design Programs: An Introduction to Programming and Computing
  • Matthias Felleisen
  • Robert Bruce Findler
  • Matthew Flatt
  • Shriram Krishnamurthi
00 reads
#5
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
  • Harold Abelson
  • Gerald Jay Sussman
  • Julie Sussman
4.2626 reads
#6
Cover 0

Design Patterns

Design Patterns: Elements of Reusable Object-Oriented Software
  • Richard Helm, John Vlissides, Erich Gamma, Ralph Johnson
00 reads
#7
Computer Systems: A Programmer's Perspective
Computer Systems: A Programmer's Perspective
  • Randal E. Bryant
  • David Richard O'Hallaron
47 reads
#8
Computer Organization and Design: The Hardware/Software Interface
Computer Organization and Design: The Hardware/Software Interface
  • David A. Patterson
  • John L. Hennessy
43 reads
#9
Cover 1

Concrete Mathematics

Concrete Mathematics: A Foundation for Computer Science
  • Ronald Graham
  • Oren Patashnik
  • Donald Knuth
00 reads
#10
Mathematics for Computer Science
Mathematics for Computer Science
  • Eric Lehman
  • F. Thomson Leighton
  • Albert R. Meyer
41 read
#11
How to Solve It : A New Aspect of Mathematical Method
How to Solve It : A New Aspect of Mathematical Method
  • George Pólya
00 reads
#12
Introduction to Algorithms
Introduction to Algorithms
  • Thomas H. Cormen
  • Charles E. Leiserson
  • Ronald L. Rivest
  • Clifford Stein
3.9318 reads
#13
The Algorithm Design Manual
The Algorithm Design Manual
  • Steven S. Skiena
4.148 reads
#14
Computer Networking
Computer Networking
  • James F. Kurose
  • Keith Ross
46 reads
#15
Database Systems: A Practical Approach to Design, Implementation, and Management
Database Systems: A Practical Approach to Design, Implementation, and Management
  • Thomas M. Connolly
32 reads
#16
Database Management Systems
Database Management Systems
  • Raghu Ramakrishnan
  • Johannes Gehrke
01 read
#17
Cover 1

Data and Reality

Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World
  • William Kent
41 read
#18
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
  • Martin Kleppmann
4.6562 reads
#19
Cover 8

Distributed Systems

Distributed Systems
  • Andrew S Tanenbaum, Maarten van Steen
32 reads
#20
Cover 1

Computer Graphics

Computer Graphics: Principles and Practice
  • Andries van Dam
  • Steven K. Feiner
  • John F. Hughes
01 read
#21
Operating Systems: Three Easy Pieces
Operating Systems: Three Easy Pieces
  • Remzi H. Arpaci-Dusseau
  • Andrea C. Arpaci-Dusseau
51 read
#22
Crafting Interpreters
Crafting Interpreters
  • Robert Nystrom
44 reads
#23
Language Implementation Patterns
Language Implementation Patterns
  • Terence Parr
00 reads
#24
Data Science From Scratch: First Principles with Python
Data Science From Scratch: First Principles with Python
  • Joel Grus
3.754 reads
#25
An Introduction to Statistical Learning
An Introduction to Statistical Learning
  • Daniela Witten
  • Trevor Hastie
  • Robert Tibshirani
  • Gareth James
56 reads
#26
Machine Learning for Hackers
Machine Learning for Hackers
  • Drew Conway
  • John Myles White
22 reads
#27
Dive into Deep Learning
Dive into Deep Learning
  • Aston Zhang
  • Zachary C. Lipton
  • Mu Li
  • Alexander J. Smola
00 reads
#28
Cover 5

Machine Learning

Machine Learning
  • Tom M. Mitchell
01 read
#29
Artificial intelligence
Artificial intelligence
  • Stuart Russell
  • Peter Norvig
3.8912 reads
#30
Clean Code: A Handbook of Agile Software Craftsmanship
Clean Code: A Handbook of Agile Software Craftsmanship
  • Robert C. Martin
4.05107 reads
#31
A Philosophy of Software Design
A Philosophy of Software Design
  • John Ousterhout
4.1230 reads