Thanks to the great work done by many innovative educators, and entrepreneurs, there’s now a lot of computer science content on a variety of platforms. And a lot of generous educators and students have created very insightful and exciting curricula, which allow anyone interested in Computer Science to learn or revise most of the core Computer Science concepts using freely available online courses. There is a curriculum from the good folks at ADUni.org. Then, there’s Scott Young’s MIT Challenge, Adam Fletcher’s You Say You Want An Education?, and aGupieWare’s curriculum.
I wanted to propose a slightly different alternative to these curricula. Instead of online courses, I wanted to propose a list of textbooks that one could read (and work on) to acquire knowledge comparable to that of a Computer Science graduate from one of the best schools. And I wanted to propose an order in which the books could be read, so that someone not aware of how all these subjects come together could just trust the wisdom of the Computer Science community, and read the books in the given order. In addition to the above mentioned curricula, I looked at the guidelines from The Joint Task Force on Computing Curricula ACM IEEE Computer Society.
NOTE: I tried to stick to the classics because, otherwise, it would be almost impossible to settle on one book for a subject. And I tried to limit to under 15 subjects.
- Calculus: Calculus: Early Transcendentals - James Stewart
- Statistics (and Probability): Probability and Statistics - Morris DeGroot
- Discrete Mathematics / Mathematics for CS: Discrete Mathematics With Applications - Susanna Epp
- Algorithms (and Data Structures): Introduction to Algorithms - CLRS (and later, The Art of Computer Programming Vol 1-4)
- Computer Architecture: Computer Architecture - John Hennessy (and later, Code the hidden language of computer hardware - Charles Petzold)
- Programming Languages: Programming Language Pragmatics - Michael Scott (and later, Seven languages in seven weeks)
- Operating Systems: Operating Systems Design & Implementationn - Tanenbaum
- Computer Networks: Computer Networks - Tenenbaum
- Compiler Design: Compilers: Principles, Techniques, and Tools - Alfred Aho
- Computational Science: Introduction to the Theory of Computation - Michael Sipser
- Database Systems: Database Systems: Design, Implementation, and Management - Carlos Coronel
- Parallel Programming: An Introduction to Parallel Programming - Peter Pacheco
- Artificial Intelligence: Artificial Intelligence A Modern Approach - Stuart Russell
- Crptography (and Security): Understanding Cryptography: A Textbook for Students and Practitioners - Christof Paar
If you have any suggestions for improvements, please let me know.