You can learn a lot about coding just by giving it a try. But for expert guidance and a look at the computer science field's past and future, you'll want to open a computer science book.
Computer science textbooks build useful skills, while computer science fiction can be fascinating, fun, and informative all at once. Computer science books about philosophy provide insight into the relationship between computers, logic, and the human experience.
Here's our recommended reading for computer science to get you started.
Craft: The best teaching computer science books
Computer science textbooks and nonfiction build understanding of computer systems, processes, and technologies. They also provide advanced information to enhance your knowledge as you explore the newest ideas in computer science.
Computer science books range from comprehensive to extremely niche. From training manuals to textbooks, works like these occupy space on computer science students, professionals, and hobbyists' shelves.
Algorithms to Live By: The Computer Science of Human Decisions
By Brian Christian and Tom Griffiths
This book looks at the roles of algorithms in our lives. The work suits anyone interested in how computer science can be used in the contemporary world to tackle some of humanity's biggest questions.
Artificial Intelligence: A Modern Approach
By Stuart J. Russell and Peter Norvig
This textbook on artificial intelligence explores the field's theory and practice. Its authors emphasize modern applications of artificial intelligence and its possibilities for the future.
Clean Code: A Handbook of Agile Software Craftsmanship
By Robert C. Martin
Divided into three parts, the book looks at how to write clean code, how to clean up bad code, and the future of maximizing code readability. Its audience includes both coding novices and experts.
Code Complete: A Practical Handbook of Software Construction
By Steve McConnell
This practical guide to programming includes code samples representing both the art and the science of software construction. McConnell's principles and techniques engage coders at all skill levels.
Code: The Hidden Language of Computer Hardware and Software
By Charles Petzold
"Code" explores the relationship between human communication and technological innovation. Petzold uses common language systems to explain the development of computers, digital media, and the internet.
Computer Networking: A Top-Down Approach
By James Kurose and Keith Ross
This book looks each layer of networking, from application to physical. Computer science and electrical engineers may appreciate this look at networking concepts that doesn't require extensive mathematical and programming knowledge.
Concrete Mathematics: A Foundation for Computer Science
By Ronald Graham, Donald Knuth, and Oren Patashnik
The authors introduce readers to the mathematics used in advanced computer programming and algorithm analysis. This self-study manual includes exercises, answers, and research problems.
Design Patterns: Elements of Reusable Object-Oriented Software
By Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
This book contains 23 patterns to help designers create object-oriented software. The authors describe each pattern's structure, benefits, and usefulness in solving design problems. Demonstrations explain how each pattern can be applied using different programming languages.
Gödel, Escher, Bach: An Eternal Golden Braid
By Douglas R. Hofstadter
This book explores maps and links between formal systems. Hofstadter identifies formal systems as the foundation for all mental activity. He uses Kurt Gödel, M.C. Escher, and Johann Sebastian Bach to exemplify the nature of intelligence and the human mind. Short stories, wordplay, and puzzles flavor the work.
Introduction to Algorithms
By Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
This essential textbook and professional reference comprehensively covers different types of algorithms, their design, and how to analyze them. This work's examples and exercises make algorithms readable to programmers and nonprogrammers, opening the field to all learners.
Introduction to Automata Theory, Languages, and Computation
By John Hopcroft, Rajeev Motwani, and Jeffrey Ullman
The authors introduce formal languages, automata theory, and computational complexity concisely and clearly. Their book also includes practical examples.
Introduction to the Theory of Computation
By Michael Sipser
The book facilitates clear understanding of simple and complex computational theory topics and concepts. Practice exercises and exercises accompany practical and philosophical exploration of theorems, proofs, and comparable mathematical treatments.
Land of LISP
By Conrad Barski
This book is an accessible guide to one of the earliest and most influential coding languages, LISP. Barski's comics, games, and images introduce LISP syntax and semantics. Readers learn to program games, use advanced features like macros, and create a web server with LISP.
MATLAB: A Practical Introduction to Programming and Problem Solving
By Stormy Attaway
This textbook takes readers through MATLAB programming and built-in functions. The book builds from basic concepts to advanced problem-solving practices to accommodate readers with no previous programming experience.
Security in Computing
By Charles P. Pfleeger and Shari Lawrence Pfleeger
A definitive guide on the subject of computer security, this book covers users, software, devices, and systems alongside networks and data protection. Hundreds of exercises help learners apply tools and techniques against the newest types of attacks and threats.
Structure and Interpretation of Computer Programs
By Julie Sussman, Harold Abelson, and Gerald Jay Sussman
First published in 1985, this textbook includes fundamentals of computer programming through examples and exercises. The second edition of the work builds upon its influence by emphasizing different approaches for managing time in computational models.
The C Programming Language
By Brian W. Kernighan and Dennis M. Ritchie
A comprehensive guide to the C programming language, this book serves as an essential reference. Co-author Ritchie was one of the language's designers. Topics covered include operators, syntax notations, declarations, and scope rules.
The Design of Everyday Things
By Don Norman
Norman's book presents simple rules for functional design. The work integrates ideas from ecological psychology, ergonomics, behavioral psychology, and communication. Computer scientists may appreciate its guidance on user-centered design.
The Little Schemer
By Daniel P. Friedman and Matthias Felleisen
This book introducing computing as an outgrowth of mathematics via the programming language Scheme. It uses illustrations to explain complicated ideas. The book's conversational tone helps make a challenging subject accessible to computer science novices and advanced programmers alike.
The Self-Taught Computer Scientist
By Cory Althoff
This book is a complete beginner's guide to data structures and algorithms. Definitions and graphics break down data structures and algorithms into clear, understandable topics.
Types and Programming Languages
By Benjamin C. Pierce
Pierce presents a comprehensive guide to type systems and programming languages from theoretical and practical perspectives. Programming examples and exercises accompany each section. Topics covered include simple type systems, universal and existential polymorphism, and type operators.
Fiction: The most fun books about computer science
Computer science knowledge isn't only in textbooks. Novels explain the history of computer science, its role in present society, and how it could influence our futures.
Computer science fiction books may give you insight into a new aspect of the field or explain something you couldn't quite grasp in textbook form. They can also bend your mind, provide a sense of escape, and make you think about the relationship between humans and computers in completely different ways.
By D. F. Jones
The first book in the trilogy of the same name, the book explores the creation and power of a supercomputer called Colossus. The speed, artificial intelligence, and authority Colossus gains propel the creation of a rival, Guardian. Struggles of man versus machine, machine versus machine, and man versus man weave through the work.
The God Machine
By Martin Caidin
Published in 1968, Caldin's novel follows Steve Rand, a cybernetic technician working on an artificial intelligence project for the government. Dubbed Project 79, the creation soon becomes uncontrollable, prompting Rand to act.
By Neal Stephenson
Stephenson interweaves the lives of Lawrence Pritchard Waterhouse and his grandson, Randy. This brisk-paced, seemingly prophetic work explores the technological developments and consequences from World War II, the rise of the internet, and the importance of data encryption.
By Mikhail Voloshin
Voloshin's lead character, Danny, lived as an obscure computer savant until tech investor Jason Tuttle brought down his employer. Danny offers Tuttle his computer services. The new job sours when Danny becomes mixed up with the Russian mafia.
The Moon is a Harsh Mistress
By Robert Heinlein
Heinlein's classic sci-fi novel is set on the moon, where a self-aware supercomputer runs a penal colony. The book highlights the complex relationships between humanity, technology, morality, and freedom.
When Harlie Was One
By David Gerrold
Harlie (short for Human Analog Replication Lethetic Intelligence Engine) functions as an artificial intelligence machine. Harlie is tasked with understanding human behavior. Its creator, David Auberson, panics upon realizing Harlie knows far more than he could have imagined.
Philosophy: Required reading for computer scientists
Why pair philosophy and computer science? Philosophy uses logic and reason to answer humanity's greatest questions and look at the human experience — goals shared by some computer scientists.
Both philosophy and computer science find their foundations in logical reasoning. The former looks at words, while the latter applies numbers and symbolic forms.
Books about computer science and philosophy explore how the two disciplines relate to and inform each other and how they can advance together.
By Atul Gawande
This book encourages using checklists for big and small tasks alike. By using stories from around the world, Gawande highlights the efficacy of checklists and how they can promote change. Computer scientists will appreciate the book's goal to get things right.
Designing Your Life: How to Build a Well-Lived, Joyful Life
By Bill Burnett and Dave Evans
Readers learn to build a well-lived, joyful life by creating structure. Both authors have computer science backgrounds. Exercises throughout the book provoke creativity and reflection to solve problems and explore future goals.
Ethics for the Information Age
By Michael Quinn
This book advocates careful consideration of technology's long- and short-term consequences by looking at its social and ethical benefits and detriments. Quinn uses ethical theories to discuss and analyze problems contemporary computer professionals and computer users face.
Factfulness: Ten Reasons We're Wrong About the World — and Why Things Are Better Than You Think
By Anna Rosling Rönnlund, Hans Rosling, and Ola Rosling
"Factfulness" is an interdisciplinary exploration of how to ask questions and find information about the world. The work highlights the knowledge gap about poverty, health, and danger worldwide to focus on challenges and opportunities to bring about human progress.
How the Mind Works
By Steven Pinker
This work asks fundamental questions about the human mind. Pinker combines cognitive science, evolutionary biology, information technology, and art to explain how humans think and behave. Combined, these disciplines may provide insight into the future of the human mind and artificial intelligence.
Buyer beware — and enjoy
The computer science books on this list give you differing perspectives on the discipline. Some are more technical, while others are intended for general audiences. Reviews can help you decide whether each book belongs on your to-read list.
Older computer science textbooks can be difficult to find, so make sure you use a reputable seller or publisher. Some sellers may offer cheaply produced scanned and printed or digital editions. Always check reviews (and ensure they match the product being sold) before purchasing a book from a third-party seller.
Most importantly — enjoy diving deeper into computer science.