A Reading List For the Self-Taught Computer Scientist


(1) Introduction to Algorithms (2) Structure and Interpretation of Computer Programs (3) The Pragmatic Programmer (4) Design Patterns (5) The C Programming Language (6) Clean Code (7) Code (8) Compilers (9) The Mythical Man-Month (10) Refactoring

1. Introduction to Algorithms Thomas H. Cormen


2. Structure and Interpretation of Computer Programs Harold Abelson


3. The Pragmatic Programmer: From Journeyman to Master Andy Hunt


4. Design Patterns: Elements of Reusable Object-Oriented Software Erich Gamma


5. The C Programming Language Brian W. Kernighan


6. Clean Code: A Handbook of Agile Software Craftsmanship Robert C. Martin


7. Code Charles Petzold


8. Compilers: Principles, Techniques, and Tools Alfred V. Aho


9. The Mythical Man-Month: Essays on Software Engineering Frederick P. Brooks Jr.


10. Refactoring: Improving the Design of Existing Code Martin Fowler


11. Introduction to the Theory of Computation Michael Sipser


12. The Algorithm Design Manual Steven S. Skiena


13. Algorithms to Live By: The Computer Science of Human Decisions Brian Christian


14. Programming Pearls Jon L. Bentley


15. Gödel, Escher, Bach: An Eternal Golden Braid Douglas R. Hofstadter


16. The Art of Computer Programming, Volume 1: Fundamental Algorithms Donald Ervin Knuth


17. Head First Design Patterns Eric Freeman


18. Code Complete Steve McConnell


19. Concrete Mathematics: A Foundation for Computer Science Ronald L. Graham


20. Operating System Concepts Abraham Silberschatz


21. Computer Networks Andrew S. Tanenbaum


22. Algorithms Robert Sedgewick


23. Working Effectively with Legacy Code Michael C. Feathers


24. JavaScript: The Good Parts Douglas Crockford


25. The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography Simon Singh


26. Computer Systems: A Programmer’s Perspective Randal E. Bryant


27. Types and Programming Languages Benjamin C. Pierce


28. The Elements of Computing Systems: Building a Modern Computer from First Principles Noam Nisan


29. The Clean Coder: A Code of Conduct for Professional Programmers Robert C. Martin


30. Coders at Work: Reflections on the Craft of Programming Peter Seibel


31. Don’t Make Me Think, Revisited: A Common Sense Approach to Web Usability Steve Krug


32. Purely Functional Data Structures Chris Okasaki


33. The Art of Computer Programming, Volumes 1–3 Boxed Set Donald Ervin Knuth


34. Effective C++: 55 Specific Ways to Improve Your Programs and Designs Scott Meyers


35. Applied Cryptography: Protocols, Algorithms, and Source Code in C Bruce Schneier


36. Domain-Driven Design: Tackling Complexity in the Heart of Software Eric Evans


37. Computer Networking: A Top-Down Approach James F. Kurose


38. Patterns of Enterprise Application Architecture Martin Fowler


39. Computer Organization & Design: The Hardware/Software Interface David A. Patterson


40. Pro Git Scott Chacon


41. Test Driven Development: By Example Kent Beck


42. The Annotated Turing: A Guided Tour Through Alan Turing’s Historic Paper on Computability and the Turing MachineCharles Petzold


43. Superintelligence: Paths, Dangers, Strategies Nick Bostrom


44. Machine Learning Tom M. Mitchell


45. The Little Schemer Daniel P. Friedman


46. Learn You a Haskell for Great Good! Miran Lipovača


47. The Art of Computer Programming, Volume 2: Seminumerical Algorithms Donald Ervin Knuth


48. The Art of Computer Programming: Volume 3: Sorting and Searching Donald Ervin Knuth


49. Computer Architecture: A Quantitative Approach John L. Hennessy


50. Hackers: Heroes of the Computer Revolution Steven Levy


All images is from Pixabay. Data is collected from Goodreads.com.