Featured image of post Self-Study Computer Science

Self-Study Computer Science

How to Self-Study Computer Science Systematically?

Subject Purpose Best Books Best Videos
Programming No need to be a “genius” programmer who can see through everything - just understand core concepts Structure and Interpretation of Computer Programs Brian Harvey’s Berkeley CS 61A
Computer Systems Understanding how computers work without any mystification - everything is connected in a clear picture Computer Systems: A Programmer’s Perspective (3rd Edition) Berkeley CS 61C
Algorithms and Data Structures Understanding how to use stacks, queues, trees, graphs, and other common data structures, along with solving problems with some depth The Algorithm Design Manual (2nd Ed.) Steven Skiena’s lectures
Mathematical Knowledge Computer science fundamentally uses math as a division, so learning math will bring competitive advantages Mathematics for Computer Science Tom Leighton’s MIT 6.042J
Operating Systems Code basics all rely on operating system operations, so you should understand its principles Operating Systems: Three Easy Pieces Berkeley CS 162
Computer Networks Understanding how the internet works to comprehend its full capabilities Computer Networking: A Top-Down Approach Stanford CS 144
Databases Working with multi-user requirements and data is common, but few understand how database systems work Readings in Database Systems Joe Hellerstein’s Berkeley CS 186
Programming Languages and Compilers Understanding how programming languages and compilers work to write better code and learn new languages more easily Crafting Interpreters Alex Aiken’s course on Lagunita
Distributed Systems Because most modern systems are distributed Designing Data-Intensive Applications MIT 6.824

Whether you’re an undergraduate looking to change majors or a self-taught programmer transitioning to coding, it’s essential to learn the fundamentals of computer science. Computer science students also need to reinforce their knowledge, especially if they plan to study abroad. So how can you access world-class educational resources and learn computer science on your own, without spending years and substantial money?

There are many such learning resources online, perhaps even too many. What you need isn’t a list of “200+ free online courses,” but rather answers to these questions:

  • Which subjects should you study, and why?
  • What are the best books or video courses for these subjects?

It’s recommended to use the textbooks or videos in Figure 1 (preferably both) to study nine core computer science courses. Spend 100-200 hours completing each course, then revisit their essence throughout your career.

If spending several years self-studying nine subjects seems too burdensome, then focus on just two books: “Computer Systems: A Programmer’s Perspective” and “Designing Data-Intensive Applications”. Time invested in these two books can yield extremely high returns, especially for self-taught engineers working in web application development.