Computer Science books that I recommend
Here is a list of Computer Science books that I have studied and enjoyed:
Introduction to Algorithms, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Do not be misled by the name of the book; it is not just an introduction. You will learn a lot from it and become a better programmer, especially if you don’t have a formal education in computer science and are unfamiliar with concepts like Big O notation or Dynamic Programming.
Operating System Concepts, by Abraham Silberschatz, Greg Gagne, Peter B. Galvin: If you want to understand how operating systems work, their problems, and design solutions, this book is for you. For some topics, the writers point out how different real OSs approach the problem in question.
Computer Networking: A Top-Down Approach, by James F. Kurose, Keith W. Ross: With this book, you will understand in detail what happens when you access a web page. At the end of each chapter, there are lovely interviews with experts in the field that give you more perspective on the impact of what you are studying.
Learn You a Haskell for Great Good!, by Miran Lipovača: This work of love will teach you not only Haskell but also the fundamentals of functional programming. The author provides free access to the online version of the book.
The Linux Programming Interface: A Linux and UNIX System Programming Handbook, by Michael Kerrisk: An excellent manual if you are developing for Linux.
Eloquent JavaScript, by Marijn Haverbeke: A very useful and concise book for learning the basics of JavaScript quickly. You need some basic programming background before starting this book. The author provides free access to the online version of the book.
Compilers: Principles, Techniques, and Tools, by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman: Also known as the “Dragon Book”, this book has been around since the 80s for a reason. If you want to build compilers (it’s a lot of fun), this is a must-read.
Java: An Introduction to Problem Solving and Programming, by Walter Savitch: A detailed book for beginners in programming and Java. Not ideal if you’re in a hurry.
The C++ Programming Language, by Bjarne Stroustrup: A comprehensive manual written by the creator of C++. Like the best things in education, this book requires time and patience. If you’re looking for a quick overview of the main features of C++, look elsewhere.