This page collects highly-rated books in computer science and technology.
Computer Languages
Title | Author | Description |
---|---|---|
The Go Programming Language | Alan A. A. Donovan, Brian W. Kernighan | A comprehensive guide to Go, covering its syntax, concurrency, and practical applications. |
Effective Java | Joshua Bloch | A must-read for Java developers, offering best practices and design patterns. |
The C++ Programming Language | Bjarne Stroustrup | The definitive guide to C++ by its creator, covering modern C++ features. |
Fluent Python | Luciano Ramalho | A deep dive into Python’s features, focusing on idiomatic and efficient code. |
Programming in Scala | Martin Odersky, Lex Spoon, Bill Venners | A comprehensive introduction to Scala, written by its creator. |
JavaScript: The Good Parts | Douglas Crockford | A concise guide to the best parts of JavaScript, focusing on good practices. |
The Rust Programming Language | Steve Klabnik, Carol Nichols | A beginner-friendly guide to Rust, covering its memory safety and concurrency features. |
Programming Ruby | Dave Thomas, Chad Fowler, Andy Hunt | A comprehensive guide to Ruby, covering its syntax and advanced features. |
Eloquent JavaScript | Marijn Haverbeke | A modern introduction to JavaScript, focusing on programming fundamentals. |
Python Crash Course | Eric Matthes | A beginner-friendly guide to Python, with hands-on projects and exercises. |
Computer Fundamentals and Architecture
Title | Author | Description |
---|---|---|
Computer Systems: A Programmer’s Perspective | Randal E. Bryant, David R. O’Hallaron | A deep dive into computer systems, focusing on how programs interact with hardware. |
Operating System Concepts | Abraham Silberschatz, Peter B. Galvin, Greg Gagne | A comprehensive textbook on operating systems, covering theory and practice. |
Computer Organization and Design | David A. Patterson, John L. Hennessy | A classic textbook on computer architecture, focusing on MIPS and RISC-V. |
The Elements of Computing Systems | Noam Nisan, Shimon Schocken | A hands-on guide to building a computer from scratch, starting with NAND gates. |
Modern Operating Systems | Andrew S. Tanenbaum | A detailed exploration of modern operating systems, including Linux and Windows. |
Computer Networks | Andrew S. Tanenbaum, David J. Wetherall | A comprehensive textbook on computer networks, covering protocols and architectures. |
Structure and Interpretation of Computer Programs | Harold Abelson, Gerald Jay Sussman, Julie Sussman | A classic textbook on programming and computer science fundamentals. |
Computer Architecture: A Quantitative Approach | John L. Hennessy, David A. Patterson | A detailed exploration of computer architecture, focusing on performance and design. |
Introduction to the Theory of Computation | Michael Sipser | A comprehensive introduction to computational theory, including automata and complexity. |
Computer Networking: A Top-Down Approach | James F. Kurose, Keith W. Ross | A top-down approach to understanding computer networks, focusing on applications and protocols. |
Big Data Technologies and Applications
Title | Author | Description |
---|---|---|
Hadoop: The Definitive Guide | Tom White | A comprehensive guide to Hadoop, covering its architecture and applications. |
Designing Data-Intensive Applications | Martin Kleppmann | A deep dive into the principles of designing scalable and reliable data systems. |
Spark: The Definitive Guide | Bill Chambers, Matei Zaharia | A comprehensive guide to Apache Spark, covering its architecture and applications. |
Big Data: Principles and Best Practices | Nathan Marz, James Warren | A practical guide to building big data systems, focusing on Lambda Architecture. |
Data Science from Scratch | Joel Grus | A hands-on introduction to data science, covering Python and machine learning. |
Data-Intensive Text Processing with MapReduce | Jimmy Lin, Chris Dyer | A detailed exploration of text processing using MapReduce. |
Big Data Analytics | Venkat Ankam | A practical guide to big data analytics, covering tools and techniques for data processing. |
Data Mining: Concepts and Techniques | Jiawei Han, Micheline Kamber, Jian Pei | A comprehensive textbook on data mining, covering algorithms and applications. |
Streaming Systems | Tyler Akidau, Slava Chernyak, Reuven Lax | A detailed exploration of streaming data systems, focusing on real-time processing. |
Big Data: A Revolution That Will Transform How We Live, Work, and Think | Viktor Mayer-Schönberger, Kenneth Cukier | A non-technical exploration of the impact of big data on society and business. |
Machine Learning and Artificial Intelligence
Title | Author | Description |
---|---|---|
Deep Learning | Ian Goodfellow, Yoshua Bengio, Aaron Courville | The definitive textbook on deep learning, covering theory and applications. |
Pattern Recognition and Machine Learning | Christopher M. Bishop | A comprehensive textbook on machine learning, focusing on probabilistic models. |
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow | Aurélien Géron | A practical guide to machine learning, with hands-on examples using Python. |
Artificial Intelligence: A Modern Approach | Stuart Russell, Peter Norvig | The most widely used textbook on AI, covering a broad range of topics. |
Reinforcement Learning: An Introduction | Richard S. Sutton, Andrew G. Barto | A comprehensive introduction to reinforcement learning, covering theory and algorithms. |
Machine Learning Yearning | Andrew Ng | A practical guide to structuring machine learning projects, focusing on best practices. |
The Hundred-Page Machine Learning Book | Andriy Burkov | A concise yet comprehensive introduction to machine learning, covering key concepts. |
Deep Learning with Python | François Chollet | A practical guide to deep learning using Keras and TensorFlow. |
Machine Learning: A Probabilistic Perspective | Kevin P. Murphy | A detailed textbook on machine learning, focusing on probabilistic methods. |
Python Machine Learning | Sebastian Raschka, Vahid Mirjalili | A practical guide to machine learning using Python, covering libraries and techniques. |
High-Performance, High-Availability, and Scalable Distributed Systems Design
Title | Author | Description |
---|---|---|
Designing Distributed Systems | Brendan Burns | A practical guide to designing scalable and reliable distributed systems. |
Distributed Systems: Principles and Paradigms | Andrew S. Tanenbaum, Maarten Van Steen | A comprehensive textbook on distributed systems, covering principles and paradigms. |
Building Microservices | Sam Newman | A practical guide to designing and building microservices architectures. |
Site Reliability Engineering | Google SRE Team | A detailed exploration of Google’s approach to building reliable and scalable systems. |
Scalability Rules: 50 Principles for Scaling Web Sites | Martin L. Abbott, Michael T. Fisher | A practical guide to scaling web applications, with 50 key principles. |
High Performance Browser Networking | Ilya Grigorik | A detailed exploration of networking performance in web applications. |
Designing Data-Intensive Applications | Martin Kleppmann | A deep dive into the principles of designing scalable and reliable data systems. |
Cloud Native Patterns | Cornelia Davis | A practical guide to building cloud-native applications, focusing on patterns and best practices. |
Kubernetes: Up and Running | Kelsey Hightower, Brendan Burns, Joe Beda | A practical guide to Kubernetes, covering its architecture and applications. |
The Art of Scalability | Martin L. Abbott, Michael T. Fisher | A comprehensive guide to scaling systems, focusing on architecture and organizational strategies. |