The best computer science books

5 authors have picked their favorite books about computer science and why they recommend each book.

Soon, you will be able to filter by genre, age group, and more. Sign up here to follow our story as we build a better way to explore books.

Shepherd is reader supported. When you buy through links on our website, we may earn an affiliate commission (learn more).

The Book of Why

By Judea Pearl, Dana MacKenzie,

Book cover of The Book of Why: The New Science of Cause and Effect

This book describes the culmination of Judea Pearl’s research on causation. For his work, Pearl won the Turing Award, which is widely considered the equivalent of the Nobel Prize for computer science. The book presents a simple, yet powerful language to talk and reason precisely about causation, a topic scientists and philosophers have studied for centuries. In addition to the well-developed theory and the many well-chosen examples, what I love about this book is that it illustrates that computer science is not just about producing software, but that it can create powerful general theories about the world.


Who am I?

I’m a professor of computer science at Oregon State University. My research focus is on programming languages, but I also work on computer science education and outreach. I grew up in Germany and moved to the United States in 2000. Since computer science is a fairly new and not widely understood discipline, I am interested in explaining its core ideas to the general public. I believe that in order to attract a more diverse set of people to the field we should emphasize that coding is only a small part of computer science.


I wrote...

Once Upon an Algorithm: How Stories Explain Computing

By Martin Erwig,

Book cover of Once Upon an Algorithm: How Stories Explain Computing

What is my book about?

According to popular culture, computer science is all about coding. This is a tragic misconception that deters many creative students from exploring the field while at the same time disappointing those that only want to code.

At its core, computer science is the science of systematic problem solving, which critically involves the design of representations and their transformations. A precisely described method for solving a problem is called an algorithm, and computation is the execution of an algorithm. My book emphasizes that everybody uses algorithms (and thus computes) all the time—often without a machine, and it explains the major topics of computer science based on everyday examples and well-known stories, without the need to learn how to code.

Managing Humans

By Michael Lopp,

Book cover of Managing Humans: Biting and Humorous Tales of a Software Engineering Manager

Michael Lopp, or Rands, as he is commonly known online, has been sharing his knowledge as a software manager for years, mainly through his blog. He is one of the most insightful voices about the art of management in a software environment, and even if you are not a manager yourself (and don’t want to become one), will make you understand and better collaborate with your own manager, and be ready when you need to lead a team or understand how it is to work with other humans.


Who am I?

Since I was a kid, I’ve been passionate about technology and had a clear vocation to work with computers. I’ve been a developer for more than 20 years now, spending half of them mainly in the Python environment, and I’ve always been interested in improving my skills. While it’s true that software development is a field that changes constantly and technology evolves at great speed, there are some elements that remain relatively unchanged and can be used to compound knowledge and ability. In particular, the elements that are closer to the human element, teamwork, coordination, etc. are quite stable over time.


I wrote...

Python Automation Cookbook

By Jaime Buelta,

Book cover of Python Automation Cookbook

What is my book about?

Python Automation Cookbook is a collection of recipes that aim to present the power of the Python programming language as a way of making a computer do the heavy lifting in a lot of repetitive tasks. Some examples present in the book include dealing with files, creating graphs, working with emails, web scrapping, sending SMSs, or marketing examples.

Python is a great language because is easy to learn and to use, and at the same time is powerful and extensive, having a great community. While a bit of knowledge of Python is assumed, the book is aimed at non-experts and casual users that can learn how to automate their own tasks.

The Innovators

By Walter Isaacson,

Book cover of The Innovators

In this treatise, Isaacson answers the question “How did we get here?” with fascinating detailed storytelling about the most important contributions and contributors to computer science. It is a definitive reference work—-if you want information about someone or something related to computer science, you can use the index to this book as the springboard to an engaging and interesting story.

The book opens with an illustrated timeline that neatly summarizes what is to come. It really is worth reading the book cover to cover to get full context on how the digital revolution really happened (admittedly, there are plenty of details that can be safely skimmed). Particularly fascinating are the ways in which these people connected with and influenced each other. From Turing to Steve Jobs, the story is a seamless web.

This book is nothing short of a masterpiece.


Who am I?

A lot of people have learned to write computer code, but computer science is something much more. I like to define it as the quest for knowledge about phenomena surrounding computation and the application of that knowledge in the real world. I was lucky to get in on the ground floor in the 1960s and know the impact computer science has had on the modern world. I believe that everyone needs to know something about computer science, so I have spent the last several decades working to teach the fundamentals to as many people as possible. Ironically, embracing technology in this effort has enabled me to reach millions of people.

I wrote...

Computer Science: An Interdisciplinary Approach

By Robert Sedgewick, Kevin Wayne,

Book cover of Computer Science: An Interdisciplinary Approach

What is my book about?

It is unusual to recommend a textbook to a general audience, but our book is pitched at such an audience. We cover the fundamentals, including: learning to write programs in a modern style (with type checking, modularity, and data abstraction); studying classic data structures and algorithms and their performance in practical situations; appreciating fundamental concepts in the theory of computation: (universality, computability, and intractability) and the contributions of Turing, von Neumann, Boole, Shannon, and other giants; gaining insight into how modern computer processors are built (including complete design of a simple processor) in order to understand the strong relationships between computers and the natural world.

The book is written in a conversational style and is more accessible than familiar standard textbooks in other subjects.

The Imposter's Handbook

By Rob Conery,

Book cover of The Imposter's Handbook: A CS Primer for Self-taught Developers

Wow! This book is exactly what every programmer has always wanted to know or even felt guilty about not knowing and it’s all presented in an extremely simplified and fun way. 

This is one of those books where you get excited in the morning when you wake up because you know you are going to be able to read more in the book and you are hoping the book will never end.

It’s rare to find a big book that I enjoyed reading so much and felt so short. This book covers almost everything you ever wondered about computer science. After reading this book, I felt like I finally understood everything a programmer was supposed to know and I no longer felt that nagging feeling of being an imposter.


Who am I?

I love to expand my knowledge and learn not just about new technologies, but how things work. I find it fascinating to dig deep into computer programming, technology concepts, and really geek out on things. That’s why I love software development or programming books that aren’t just about some technology and how to do something, but rather books that really make you think and teach you not just programming skills but critical thinking about problem-solving skills. As a software developer for over 15 years and a person who teaches software developers, I have learned that if someone isn’t entertained, they aren’t learning. That’s why I put together a list of fun, entertaining and useful books.


I wrote...

Soft Skills: The Software Developer's Life Manual

By John Z. Sonmez,

Book cover of Soft Skills: The Software Developer's Life Manual

What is my book about?

For most software developers, coding is the fun part. The hard bits are dealing with clients, peers, and managers, staying productive, achieving financial security, keeping yourself in shape, and finding true love. This book is here to help.

Soft Skills: The software developer's life manual is a guide to a well-rounded, satisfying life as a technology professional. In it, developer and life coach John Sonmez offers advice to developers on important "soft" subjects like career and productivity, personal finance and investing, and even fitness and relationships. Arranged as a collection of 71 short chapters, this fun-to-read book invites you to dip in wherever you like. Soft Skills will help make you a better programmer, a more valuable employee, and a happier, healthier person.

Codex Seraphinianus

By Luigi Serafini,

Book cover of Codex Seraphinianus

One of the most treasured and unusual books in my personal library. It’s an encyclopedia from another world, entirely written in a made-up language. Page after page of haunting and strange illustrations, organized into specific categories and concepts. Sitting with this book transports me back to the time before I could read, when words felt like incomprehensible symbols. Taking the time to puzzle over this book feels like such a valuable experience. It takes me right out of the familiar ways of taking in information and puts me in a state of mind that has to search and consider the juxtaposition of images and ideas in totally new ways. I can’t recommend this book enough.


Who am I?

I think of my imagination as a living thing that I have a working, evolving relationship with. I try to access that creative flow state through automatic drawing and something about that process seems to help me in my daily life. I draw every day. I make art zines, comics, fine art, album art, and collaborative works. The books in this list all feel personally important to me and are works I return to and think about often.


I wrote...

The Understanding Monster - Book One

By Theo Ellsworth,

Book cover of The Understanding Monster - Book One

What is my book about?

Making this book was a psychologically strange experience for me. It was an inward deep dive into my own personal mythologies and anxieties and the process of making it felt a bit out of my control. I feel like I came out of the project with a lot of valuable insight but I think a lot of readers are perplexed by this book. Maybe that’s okay. I often find great comfort and meaning in the work of other artists who let their imaginations grow wild and strange.

Gödel, Escher, Bach

By Douglas R. Hofstadter,

Book cover of Gödel, Escher, Bach: An Eternal Golden Braid

The focus of this book is self-reference and recursion. By explaining what formal systems are and how they can be identified in music and art, Hofstadter illustrates how fundamental concepts of computing appear in unexpected areas of our lives. A focus of this book is on the principal limitations of formal systems and thus of computing. Some parts of the book may be hard to digest due to the significant use of formal symbol manipulation, and with 777 pages it is not a quick read. The effort is, however, rewarded with deep insights into Gödel's incompleteness theorem and its implication for computing. This is a brilliant book, a true classic, which contains much food for thought.


Who am I?

I’m a professor of computer science at Oregon State University. My research focus is on programming languages, but I also work on computer science education and outreach. I grew up in Germany and moved to the United States in 2000. Since computer science is a fairly new and not widely understood discipline, I am interested in explaining its core ideas to the general public. I believe that in order to attract a more diverse set of people to the field we should emphasize that coding is only a small part of computer science.


I wrote...

Once Upon an Algorithm: How Stories Explain Computing

By Martin Erwig,

Book cover of Once Upon an Algorithm: How Stories Explain Computing

What is my book about?

According to popular culture, computer science is all about coding. This is a tragic misconception that deters many creative students from exploring the field while at the same time disappointing those that only want to code.

At its core, computer science is the science of systematic problem solving, which critically involves the design of representations and their transformations. A precisely described method for solving a problem is called an algorithm, and computation is the execution of an algorithm. My book emphasizes that everybody uses algorithms (and thus computes) all the time—often without a machine, and it explains the major topics of computer science based on everyday examples and well-known stories, without the need to learn how to code.

How Not to Be Wrong

By Jordan Ellenberg,

Book cover of How Not to Be Wrong: The Power of Mathematical Thinking

This book is not about computing, but it is relevant in an indirect way. I love this book, since it is written in such an engaging style and illustrates with many examples that math is not a dry subject to be practiced only by mathematicians but helps everyone to solve real-world problems. The book shows how important it is to be precise in describing problems and that applying a little mathematical rigor goes a long way in solving them. Ellenberg describes mathematics as the “extension of common sense by other means.” In a similar way, I view computer science as the extension of problem-solving methods (aka “algorithms”) by other means. 


Who am I?

I’m a professor of computer science at Oregon State University. My research focus is on programming languages, but I also work on computer science education and outreach. I grew up in Germany and moved to the United States in 2000. Since computer science is a fairly new and not widely understood discipline, I am interested in explaining its core ideas to the general public. I believe that in order to attract a more diverse set of people to the field we should emphasize that coding is only a small part of computer science.


I wrote...

Once Upon an Algorithm: How Stories Explain Computing

By Martin Erwig,

Book cover of Once Upon an Algorithm: How Stories Explain Computing

What is my book about?

According to popular culture, computer science is all about coding. This is a tragic misconception that deters many creative students from exploring the field while at the same time disappointing those that only want to code.

At its core, computer science is the science of systematic problem solving, which critically involves the design of representations and their transformations. A precisely described method for solving a problem is called an algorithm, and computation is the execution of an algorithm. My book emphasizes that everybody uses algorithms (and thus computes) all the time—often without a machine, and it explains the major topics of computer science based on everyday examples and well-known stories, without the need to learn how to code.

The Art of Computer Programming

By Donald Knuth,

Book cover of The Art of Computer Programming: Volume 3: Sorting and Searching

Knuth’s unique mix of playfulness and rigor came to define computer science as an intellectual discipline: computer science didn’t really have anything to do with computers, but everything to do with a particular way of seeing the world.  Just browse and wonder at the beauty and precision achieved in these books.   

Volume 3 (Sorting and Searching) is my personal favorite, and I encourage you to start there. During the pandemic, I finally got around to reading Volume 4A (Combinatorial Algorithms), which was published thirty plus years after Volume 3. It was the same feeling I had watching the movie The Phantom Menace years after growing up with the original Star Wars trilogy. I had forgotten just how unique and distinctive Knuth’s Art of Computer Programming is.


Who am I?

I am Professor of Computer Science at Stony Brook University, and have spent the past thirty years thinking/teaching/writing about algorithms. Algorithms are the really cool thing about computer science, for they form the ideas behind any interesting computer program. And algorithms turn out to be the ideas behind many interesting aspects of life that have nothing to do with computers. I have written six books on algorithms, programming, gambling, and history –including the ranking of the historical significance of all the people in Wikipedia.


I wrote...

The Algorithm Design Manual

By Steven S. Skiena,

Book cover of The Algorithm Design Manual

What is my book about?

This newly expanded and updated third edition of the bestselling classic continues to take the "mystery" out of designing algorithms and analyzing their efficacy and efficiency. It serves as the primary text of choice for algorithm design courses while maintaining its status as the premier practical reference guide to algorithms for programmers, researchers, and students.

The reader-friendly The Algorithm Design Manual provides straightforward access to combinatorial algorithms technology, stressing design over-analysis. The first part, "Techniques", provides accessible instruction on methods for designing and analyzing computer algorithms. The second part, "Resources", is intended for browsing and reference, and comprises the catalog of algorithmic resources, implementations, and an extensive bibliography.

Computers Ltd.

By David Harel,

Book cover of Computers Ltd.: What They Really Can't Do

This book provides a brief introduction to the concept of algorithms before discussing the limitations of computation. Specifically, Harel explains undecidable problems (that is, problems for which no algorithm exists) and infeasible problems (that is, problems for which only algorithms are known that have an exponential runtime). I like this book (and its splendid title) because of its focus on the limitations of computation. Harel does a marvelous job in explaining two difficult topics about computation. The understanding of any scientific discipline requires the understanding of its limits, and the limits of computation are as significant as they are surprising.


Who am I?

I’m a professor of computer science at Oregon State University. My research focus is on programming languages, but I also work on computer science education and outreach. I grew up in Germany and moved to the United States in 2000. Since computer science is a fairly new and not widely understood discipline, I am interested in explaining its core ideas to the general public. I believe that in order to attract a more diverse set of people to the field we should emphasize that coding is only a small part of computer science.


I wrote...

Once Upon an Algorithm: How Stories Explain Computing

By Martin Erwig,

Book cover of Once Upon an Algorithm: How Stories Explain Computing

What is my book about?

According to popular culture, computer science is all about coding. This is a tragic misconception that deters many creative students from exploring the field while at the same time disappointing those that only want to code.

At its core, computer science is the science of systematic problem solving, which critically involves the design of representations and their transformations. A precisely described method for solving a problem is called an algorithm, and computation is the execution of an algorithm. My book emphasizes that everybody uses algorithms (and thus computes) all the time—often without a machine, and it explains the major topics of computer science based on everyday examples and well-known stories, without the need to learn how to code.

Dealers of Lightning

By Michael A. Hiltzik,

Book cover of Dealers of Lightning: Xerox Parc and the Dawn of the Computer Age

The software interface for Apple’s innovative Macintosh was largely (and legally) modeled on system software designed at the Palo Alto < California research center of Xerox, an East Coast photocopy company whose stodgy executives failed to realize the value of the coding breakthroughs they had funded and nurtured in the heart of northern California’s computer cauldron. Before anyone at the top of Xerox realized the enormity of their errors, the company had licensed to Steve Jobs and Apple key software technologies that animated the Macintosh revolution in the 1980s. Hiltzik’s richly detailed and readable history, based on scores of interviews, is the best account of the epic failure of an American corporate icon. Apple and Jobs went on to achieve glory while Xerox ultimately became a zombie company, having missed the greatest industrial wave of the past 75 years. 


Who am I?

The author was the chief Silicon Valley writer for The Wall Street Journal during the first of the 1990s. He went on to become an acclaimed scholar in the history of science, engineering, and innovation. At the peak of his journalism career, the Boston Globe described Zachary as the most talented reporter on the Journal's staff. Zachary went on to write technology and innovation columns for The New York Times, Technology Review, and Spectrum magazineZachary has also taught courses on science and technology studies at Stanford University, UC Berkeley, and Arizona State University, where he was a professor from 2010-2020. He lives in northern California. 


I wrote...

Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft

By G. Pascal Zachary,

Book cover of Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft

What is my book about?

Showstopper is an epic techno-scientific creation story, about the making of a complex and sprawling piece of computer code by a team of code writers at what was the iconic software company in the 1990s, Microsoft. The narrative follows an ensemble cast of characters through their trials and triumphs in constructing a breakthrough program called Windows NT, versions of which remain of value today, notably in the field known as cloud computing. At the time of publication in 1994, Showstopper was widely reviewed: called “a compelling tale” by Newsweek, “riveting” by Harvard Business Review and  “gripping” by Fortune magazine. remains in print. With the passage of time, Showstopper gained a cult following among code writers, both because of how the book captures life on the frontlines of computing.

Or, view all 18 books about computer science

New book lists related to computer science

All book lists related to computer science

Bookshelves related to computer science