100 Best Computer Science Books of All Time

We've ranked the best computer science books using expert recommendations, sales data, and millions of reader ratings. At Shortform, we know books. Our book guides are the best in the world. Learn why.

Structure and Interpretation of Computer Programs book cover1

Structure and Interpretation of Computer Programs

Harold Abelson and Gerald Jay Sussman

5.0
Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade. This long-awaited revision contains changes throughout the text. There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experienc
Code: The Hidden Language of Computer Hardware and Software book cover2

Code: The Hidden Language of Computer Hardware and Software

Charles Petzold

4.9
What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of communicating with each other. And through CODE, we see how this ingenuity and our very human compulsion to communicate have driven the technological innovations of the past two centuries.

Using everyday objects and fam
The Pragmatic Programmer: From Journeyman to Master book cover3

The Pragmatic Programmer: From Journeyman to Master

Andrew Hunt and David Thomas

4.8
-- Ward Cunningham Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques fo
Algorithms to Live By: The Computer Science of Human Decisions book cover4

Algorithms to Live By: The Computer Science of Human Decisions

Brian Christian and Griffiths

4.8
A fascinating exploration of how insights from computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mind

All our lives are constrained by limited space and time, limits that give rise to a particular set of problems. What should we do, or leave undone, in a day or a lifetime? How much messiness should we
Clean Code: A Handbook of Agile Software Craftsmanship book cover5

Clean Code: A Handbook of Agile Software Craftsmanship

Robert C. Martin

4.8
Even bad code can function. But if code isn t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn t have to be that way.
Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship . Martin has teamed up with
Introduction To Algorithms book cover6

Introduction To Algorithms

Thomas H. Cormen, Charles E. Leiserson, et al.

4.8
Code Complete book cover7

Code Complete

Steve McConnell

4.7
Widely considered one of the best practical guides to programming, Steve McConnell's original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices--and hundreds of new code samples--illustrating the art and science of software construction. Capturing the body of knowledge availab
The Mythical Man-Month: Essays on Software Engineering book cover8

The Mythical Man-Month: Essays on Software Engineering

Frederick P. Brooks Jr.

4.7
Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20
Cracking the Coding Interview: 189 Programming Questions and Solutions book cover9

Cracking the Coding Interview: 189 Programming Questions and Solutions

Gayle Laakmann McDowell

4.7
I am not a recruiter. I am a software engineer. And as such, I know what it's like to be asked to whip up brilliant algorithms on the spot and then write flawless code on a whiteboard. I've been through this as a candidate and as an interviewer.

Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your
Design Patterns: Elements of Reusable Object-Oriented Software book cover10

Design Patterns: Elements of Reusable Object-Oriented Software

Erich; Helm John Gamma

4.6
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.

The authors begin by
The C Programming Language book cover11

The C Programming Language

Brian W. Kernighan, Dennis M. Ritchie

4.6
This book is meant to help the reader learn how to program in C. It is the definitive reference guide, now in a second edition. Although the first edition was written in 1978, it continues to be a worldwide best-seller. This second edition brings the classic original up to date to include the ANSI standard.

From the Preface:
We have tried to retain the brevity of the first edition. C is not a bi
Gödel, Escher, Bach: An Eternal Golden Braid book cover12

Gödel, Escher, Bach: An Eternal Golden Braid

Douglas R. Hofstadter

4.6
Douglas Hofstadter's book is concerned directly with the nature of “maps” or links between formal systems. However, according to Hofstadter, the formal system that underlies all mental activity transcends the system that supports it. If life can grow out of the formal chemical substrate of the cell, if consciousness can emerge out of a formal system of firing neurons, then so too will computers at
Refactoring: Improving the Design of Existing Code book cover14

Refactoring: Improving the Design of Existing Code

Martin Fowler

4.5
Fully Revised and Updated-Includes New Refactorings and Code Examples"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
--M. Fowler (1999) For more than twenty years, experienced programmers worldwide have relied on Martin Fowler's Refactoring to improve the design of existing code and to enhance software maintainability, as well as to
Artificial Intelligence: A Modern Approach book cover15

Artificial Intelligence: A Modern Approach

Stuart Russell and Peter Norvig

4.5
For one or two-semester, undergraduate or graduate-level courses in Artificial Intelligence. The long-anticipated revision of this best-selling text offers the most comprehensive, up-to-date introduction to the theory and practice of artificial intelligence. *NEW-Nontechnical learning material-Accompanies each part of the book. *NEW-The Internet as a sample application for intelligent systems-Adde
The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography book cover16

The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography

Simon Singh

4.5
In his first book since the bestselling Fermat's Enigma, Simon Singh offers the first sweeping history of encryption, tracing its evolution and revealing the dramatic effects codes have had on wars, nations, and individual lives. From Mary, Queen of Scots, trapped by her own code, to the Navajo Code Talkers who helped the Allies win World War II, to the incredible (and incredibly simple) logistica
Head First Design Patterns book cover17

Head First Design Patterns

Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson

4.4
You're not alone.

At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns--the lessons learned by those who've faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others, so that you
Compilers: Principles, Techniques, and Tools book cover18

Compilers: Principles, Techniques, and Tools

Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman

4.4
This introduction to compilers is the direct descendant of the well-known book by Aho and Ullman, Principles of Compiler Design. The authors present updated coverage of compilers based on research and techniques that have been developed in the field over the past few years. The book provides a thorough introduction to compiler design and covers topics such as context-free grammars, fine state mach
Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability book cover19

Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability

Steve Krug

4.4
Since Don’t Make Me Think was first published in 2000, over 400,000 Web designers and developers have relied on Steve Krug’s guide to help them understand the principles of intuitive navigation and information design.

In this 3rd edition, Steve returns with fresh perspective to reexamine the principles that made Don’t Make Me Think a classic-–with updated examples and a new chapter on mobile usabil
Designing Data-Intensive Applications book cover20

Designing Data-Intensive Applications

Martin Kleppmann

4.4
Many forces affect software today: larger datasets, geographical disparities, complex company structures, and the growing need to be fast and nimble in the face of change.

Proven approaches such as service-oriented and event-driven architectures are joined by newer techniques such as microservices, reactive architectures, DevOps, and stream processing. Many of these patterns are successful by thems
The Art of Computer Programming, Volume 1: Fundamental Algorithms book cover21

The Art of Computer Programming, Volume 1: Fundamental Algorithms

Donald E. Knuth

4.4
The first revision of this third volume is the most comprehensivesurvey of classical computer techniques for sorting and searching. It extends thetreatment of data structures in Volume 1 to consider both large and smalldatabases and internal and external memories. The book contains a selection ofcarefully checked computer methods, with a quantitative analysis of theirefficiency. Outstanding featur
Superintelligence: Paths, Dangers, Strategies book cover22

Superintelligence: Paths, Dangers, Strategies

Nick Bostrom

4.4
Superintelligence asks the questions: what happens when machines surpass humans in general intelligence? Will artificial agents save or destroy us? Nick Bostrom lays the foundation for understanding the future of humanity and intelligent life.

The human brain has some capabilities that the brains of other animals lack. It is to these distinctive capabilities that our species owes its dominant posi
Introduction to the Theory of Computation book cover23

Introduction to the Theory of Computation

Michael Sipser

4.4

This highly anticipated revision builds upon the strengths of the previous edition. Sipser's candid, crystal-clear style allows students at every level to understand and enjoy this field. His innovative "proof idea" sections explain profound concepts in plain English. The new edition incorporates many improvements students and professors have suggested over the years, and offers updated, classroom

The Clean Coder: A Code of Conduct for Professional Programmers book cover24

The Clean Coder: A Code of Conduct for Professional Programmers

Robert Martin

4.4
Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In The Clean Coder: A Code of Conduct for Professional Programmers, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true
Effective Java book cover25

Effective Java

Joshua Bloch

4.3
Since this Jolt-award winning classic was last updated in 2008 (shortly after Java 6 was released), Java has changed dramatically. The principal enhancement in Java 8 was the addition of functional programming constructs to Java's object-oriented roots. Java 7, 8, and 9 also introduced language features, such as the try-with-resources statement, the diamond operator for generic types, default and
The Elements of Computing Systems: Building a Modern Computer from First Principles book cover26

The Elements of Computing Systems: Building a Modern Computer from First Principles

Noam Nisan and Shimon Schocken

4.3
In the early days of computer science, the interactions of hardware, software, compilers, and operating system were simple enough to allow students to see an overall picture of how computers worked. With the increasing complexity of computer technology and the resulting specialization of knowledge, such clarity is often lost. Unlike other texts that cover only one aspect of the field, The Elements
Programming Pearls book cover27

Programming Pearls

Jon Bentley

4.3
The first edition of Programming Pearls was one of the most influential books I read early in my career, and many of the insights I first encountered in that book stayed with me long after I read it. Jon has done a wonderful job of updating the material. I am very impressed at how fresh the new examples seem. - Steve McConnell When programmers list their favorite books, Jon Bentley's collection of
Concrete Mathematics: A Foundation for Computer Science book cover28

Concrete Mathematics: A Foundation for Computer Science

Ronald L. Graham, Donald E. Knuth, et al.

4.3
Concrete Mathematics is a blending of CONtinuous and disCRETE mathematics. "More concretely," the authors explain, "it is the controlled manipulation of mathematical formulas, using a collection of techniques for solving problems."
Steve Jobs book cover29

Steve Jobs

Walter Isaacson

4.3
From the author of the bestselling biographies of Benjamin Franklin and Albert Einstein, this is the exclusive, New York Times bestselling biography of Apple co-founder Steve Jobs.

Based on more than forty interviews with Jobs conducted over two years—as well as interviews with more than a hundred family members, friends, adversaries, competitors, and colleagues—Walter Isaacson has written a riveti
Thinking in Systems: A Primer book cover30

Thinking in Systems: A Primer

Donella H. Meadows

4.3
Meadows’ Thinking in Systems, is a concise and crucial book offering insight for problem solving on scales ranging from the personal to the global. Edited by the Sustainability Institute’s Diana Wright, this essential primer brings systems thinking out of the realm of computers and equations and into the tangible world, showing readers how to develop the systems-thinking skills that thought leader
The Black Swan: The Impact of the Highly Improbable book cover31

The Black Swan: The Impact of the Highly Improbable

Nassim Nicholas Taleb

4.3
A black swan is a highly improbable event with three principal characteristics: It is unpredictable; it carries a massive impact; and, after the fact, we concoct an explanation that makes it appear less random, and more predictable, than it was.

The astonishing success of Google was a black swan; so was 9/11. For Nassim Nicholas Taleb, black swans underlie almost everything about our world, from t
Domain-Driven Design: Tackling Complexity in the Heart of Software book cover32

Domain-Driven Design: Tackling Complexity in the Heart of Software

Eric Evans

4.3
"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving understanding of it. Eric th
Working Effectively with Legacy Code book cover33

Working Effectively with Legacy Code

Michael Feathers

4.3
Get more out of your legacy systems, more performance, functionality, reliability, and manageability.Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts.

In this book, Michael Feathers offers start-t
Types and Programming Languages book cover34

Types and Programming Languages

Benjamin C. Pierce

4.3
A comprehensive introduction to type systems and programming languages.

A type system is a syntactic method for automatically checking the absence of certain erroneous behaviors by classifying program phrases according to the kinds of values they compute. The study of type systems--and of programming languages from a type-theoretic perspective--has important applications in software engineering, la
The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win book cover35

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

Gene Kim

4.2
Bill is an IT manager at Parts Unlimited. It's Tuesday morning and on his drive into the office, Bill gets a call from the CEO.

The company's new IT initiative, code named Phoenix Project, is critical to the future of Parts Unlimited, but the project is massively over budget and very late. The CEO wants Bill to report directly to him and fix the mess in ninety days or else Bill's entire department
Deep Learning book cover36

Deep Learning

Ian Goodfellow, Yoshua Bengio, et al.

4.2
An introduction to a broad range of topics in deep learning, covering mathematical and conceptual background, deep learning techniques used in industry, and research perspectives.

Deep learning is a form of machine learning that enables computers to learn from experience and understand the world in terms of a hierarchy of concepts. Because the computer gathers knowledge from experience, there is no
The C++ Programming Language book cover37

The C++ Programming Language

Bjarne Stroustrup

4.2
The new C++11 standard allows programmers to express ideas more clearly, simply, and directly, and to write faster, more efficient code. Bjarne Stroustrup, the designer and original implementer of C++, has reorganized, extended, and completely rewritten his definitive reference and tutorial for programmers who want to use C++ most effectively. "The C++ Programming Language, Fourth Edition, " deliv
The Little Schemer book cover38

The Little Schemer

Daniel P. Friedman, Matthias Felleisen, et al.

4.2
The notion that “thinking about computing is one of the most exciting things the human mind can do” sets both The Little Schemer (formerly known as The Little LISPer) and its new companion volume, The Seasoned Schemer, apart from other books on LISP. The authors' enthusiasm for their subject is compelling as they present abstract concepts in a humorous and easy-to-grasp fashion. Together, these bo
JavaScript: The Good Parts book cover39

JavaScript: The Good Parts

Douglas Crockford

4.2
Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole--a subset you can use to create truly extensible and
Modern Operating Systems, 4th Edition book cover40

Modern Operating Systems, 4th Edition

Andrew S. Tanenbaum and Herbert Bos

4.2
Patterns of Enterprise Application Architecture book cover41

Patterns of Enterprise Application Architecture

Martin Fowler

4.2
The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their develop
Computer Networks book cover42

Computer Networks

Andrew S. Tanenbaum

4.2
For courses in computer networking or introductions to networking at both the undergraduate and graduate level in computer science, engineering, CIS, MIS, and business departments. In this revision, the author takes a structured approach to explaining how networks function.
The Art of Computer Programming, Volumes 1-3 Boxed Set book cover43

The Art of Computer Programming, Volumes 1-3 Boxed Set

Donald E. Knuth

4.2
Knuth's classic work has been widely acclaimed as one of the most influential works in the field of computer science. For the first time, these books are available as a boxed, three-volume set. The handsome slipcase makes this set an ideal gift for the recent computer science graduate or professional programmer. Offering a description of classical computer science, this multi-volume work is a usef
Coders at Work: Reflections on the Craft of Programming book cover44

Coders at Work: Reflections on the Craft of Programming

Peter Seibel

4.2
Peter Seibel interviews 16 of the most interesting computer programmers alive today in Coders at Work, offering a brand-new companion volume to Apress’s highly acclaimed best-seller Founders at Work by Jessica Livingston. As the words "at work" suggest, Peter Seibel focuses on how his interviewees tackle the day–to–day work of programming, while revealing much more, like how they became great prog
Computer Systems: A Programmer's Perspective book cover45

Computer Systems: A Programmer's Perspective

Randal E. Bryant, David R. O'Hallaron

4.2
For Computer Organization and Architecture and Computer Systems courses in CS and EE and ECE departments. Developed out of an introductory course at Carnegie Mellon University, this text explains the important and enduring concepts underlying all computer systems, and shows the concrete ways that these ideas affect the correctness, performance, and utility of application programs. The text's concr
Data Structures and Algorithms in Java book cover46

Data Structures and Algorithms in Java

Robert Sedgewick and Kevin Wayne

4.2
The design and analysis of efficient data structures has long been recognized as a key component of the Computer Science curriculum. Goodrich, Tomassia and Goldwasser's approach to this classic topic is based on the object-oriented paradigm as the framework of choice for the design of data structures. For each ADT presented in the text, the authors provide an associated Java interface. Concrete da
Hackers: Heroes of the Computer Revolution book cover47

Hackers: Heroes of the Computer Revolution

Steven Levy

4.2
A mere fifteen years ago, computer nerds were seen as marginal weirdos, outsiders whose world would never resonate with the mainstream. That was before one pioneering work documented the underground computer revolution that was about to change our world forever. With groundbreaking profiles of Bill Gates, Steve Wozniak, MIT's Tech Model Railroad Club, and more, Steven Levy's Hackers brilliantly ca
Pro Git book cover48

Pro Git

Scott Chacon

4.2
Git is the version control system developed by Linus Torvalds for Linux kernel development. It took the open source world by storm since its inception in 2005, and is used by small development shops and giants like Google, Red Hat, and IBM, and of course many open source projects.

A book by Git experts to turn you into a Git expert. Introduces the world of distributed version control Shows how to b
The Design of Everyday Things book cover49

The Design of Everyday Things

Don Norman

4.2
Even the smartest among us can feel inept as we fail to figure out which light switch or oven burner to turn on, or whether to push, pull, or slide a door. The fault, argues this ingenious—even liberating—book, lies not in ourselves, but in product design that ignores the needs of users and the principles of cognitive psychology. The problems range from ambiguous and hidden controls to arbitrary r
The Annotated Turing: A Guided Tour Through Alan Turing's Historic Paper on Computability and the Turing Machine book cover50

The Annotated Turing: A Guided Tour Through Alan Turing's Historic Paper on Computability and the Turing Machine

Charles Petzold

4.2
Programming Legend Charles Petzold unlocks the secrets of the extraordinary and prescient 1936 paper by Alan M. Turing

Mathematician Alan Turing invented an imaginary computer known as the Turing Machine; in an age before computers, he explored the concept of what it meant to be "computable," creating the field of computability theory in the process, a foundation of present-day computer programm
Operating System Concepts book cover51

Operating System Concepts

Abraham Silberschatz, Peter B. Galvin, Greg Gagne

4.2
Another defining moment in the evolution of operating systems
Small footprint operating systems, such as those driving the handheld devices that the baby dinosaurs are using on the cover, are just one of the cutting-edge applications you'll find in Silberschatz, Galvin, and Gagne's Operating System Concepts, Seventh Edition.
By staying current, remaining relevant, and adapting to emerging course n
Effective C++: 55 Specific Ways to Improve Your Programs and Designs book cover52

Effective C++: 55 Specific Ways to Improve Your Programs and Designs

Scott Meyers

4.2
The Barnes & Noble Review
Since early in the 90s, working C++ programmers have relied on Scott Meyers s Effective C++ to dramatically improve their skills. But the state-of-the-art has moved forward dramatically since Meyers last updated this book in 1997. (For instance, there s now STL. Design patterns. Even new functionality being added through TR1 and Boost.) So Meyers has done a top-to-bottom r
Hacker's Delight book cover53

Hacker's Delight

Henry S. Warren Jr.

4.2
Aiming to tell the dark secrets of computer arithmetic, this title is suitable for library developers, compiler writers, and lovers of elegant hacks.
An Introduction to Statistical Learning: With Applications in R book cover54

An Introduction to Statistical Learning: With Applications in R

Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani

4.2
An Introduction to Statistical Learning provides an accessible overview of the field of statistical learning, an essential toolset for making sense of the vast and complex data sets that have emerged in fields ranging from biology to finance to marketing to astrophysics in the past twenty years. This book presents some of the most important modeling and prediction techniques, along with relevant a
The Art of Computer Programming, Volumes 1-4a Boxed Set book cover55

The Art of Computer Programming, Volumes 1-4a Boxed Set

Donald E. Knuth

4.2
"The bible of all fundamental algorithms and the work that taught many of today's software developers most of what they know about computer programming.""--Byte," September 1995 Countless readers have spoken about the profound personal influence of Knuth's work. Scientists have marveled at the beauty and elegance of his analysis, while ordinary programmers have successfully applied his "cookbook"
Peopleware: Productive Projects and Teams book cover56

Peopleware: Productive Projects and Teams

Tom DeMarco and Tim Lister

4.1
Learn You a Haskell for Great Good! book cover57

Learn You a Haskell for Great Good!

Miran Lipovača

4.1

Learn You a Haskell for Great Good! is a fun, illustrated guide to learning Haskell, a functional programming language that's growing in popularity. Learn You a Haskell for Great Good! introduces programmers familiar with imperative languages (such as C++, Java, or Python) to the unique aspects of functional programming. Packed with jokes, pop culture references, and the author's own hilarious art

Hackers & Painters: Big Ideas from the Computer Age book cover58

Hackers & Painters: Big Ideas from the Computer Age

Paul Graham

4.1
“The computer world is like an intellectual Wild West, in which you can shoot anyone you wish with your ideas, if you’re willing to risk the consequences.” —from Hackers & Painters: Big Ideas from the Computer Age, by Paul Graham

We are living in the computer age, in a world increasingly designed and engineered by computer programmers and software designers, by people who call themselves hackers. W
Pattern Recognition and Machine Learning book cover59

Pattern Recognition and Machine Learning

Christopher M. Bishop

4.1
Pattern recognition has its origins in engineering, whereas machine learning grew out of computer science. However, these activities can be viewed as two facets of the same field, and together they have undergone substantial development over the past ten years. In particular, Bayesian methods have grown from a specialist niche to become mainstream, while graphical models have emerged as a general
The Soul of a New Machine book cover60

The Soul of a New Machine

Tracy Kidder

4.1
The computer revolution brought with it new methods of getting work done—just look at today's news for reports of hard-driven, highly-motivated young software and online commerce developers who sacrifice evenings and weekends to meet impossible deadlines. Tracy Kidder got a preview of this world in the late 1970s when he observed the engineers of Data General design and build a new 32-bit minicomp
Grokking Algorithms An Illustrated Guide For Programmers and Other Curious People book cover61

Grokking Algorithms An Illustrated Guide For Programmers and Other Curious People

Aditya Bhargava

4.1
An algorithm is nothing more than a step-by-step procedure for solving a problem. The algorithms you'll use most often as a programmer have already been discovered, tested, and proven. If you want to take a hard pass on Knuth's brilliant but impenetrable theories and the dense multi-page proofs you'll find in most textbooks, this is the book for you. This fully-illustrated and engaging guide makes
Hacking: The Art of Exploitation book cover62

Hacking: The Art of Exploitation

Jon Erickson

4.1
Hacking is the art of creative problem solving, whether that means finding an unconventional solution to a difficult problem or exploiting holes in sloppy programming. Many people call themselves hackers, but few have the strong technical foundation needed to really push the envelope.

Rather than merely showing how to run existing exploits, author Jon Erickson explains how arcane hacking techniques
The Innovators: How a Group of Hackers, Geniuses and Geeks Created the Digital Revolution book cover63

The Innovators: How a Group of Hackers, Geniuses and Geeks Created the Digital Revolution

Walter Isaacson

4.1
The computer and the internet are among the most important innovations of our era, but few people know who created them. They were not conjured up in a garret or garage by solo inventors suitable to be singled out on magazine covers or put into a pantheon with Edison, Bell, and Morse. Instead, most of the innovations of the digital age were done collaboratively. There were a lot of fascinating peo
Test Driven Development: By Example book cover64

Test Driven Development: By Example

Kent Beck

4.1
Follows two TDD projects from start to finish, illustrating techniques programmers can use to increase the quality of their work. The examples are followed by references to the featured TDD patterns and refactorings. This book emphasises on agile methods and fast development strategies.
The Information: A History, a Theory, a Flood book cover65

The Information: A History, a Theory, a Flood

James Gleick

4.1
James Gleick, the author of the best sellers Chaos and Genius, now brings us a work just as astonishing and masterly: a revelatory chronicle and meditation that shows how information has become the modern era’s defining quality—the blood, the fuel, the vital principle of our world.

The story of information begins in a time profoundly unlike our own, when every thought and utterance vanishes as soo
The Linux Programming Interface: A Linux and Unix System Programming Handbook book cover66

The Linux Programming Interface: A Linux and Unix System Programming Handbook

Michael Kerrisk

4.1
The Linux Programming Interface is the definitive guide to the Linux and UNIX programming interface—the interface employed by nearly every application that runs on a Linux or UNIX system.

In this authoritative work, Linux programming expert Michael Kerrisk provides detailed descriptions of the system calls and library functions that you need in order to master the craft of system programming, and a
Clean Architecture book cover67

Clean Architecture

Robert C. Martin

4.1
Building upon the success of best-sellers The Clean Coder and Clean Code, legendary software craftsman Robert C. "Uncle Bob" Martin shows how to bring greater professionalism and discipline to application architecture and design.
As with his other books, Martin's Clean Architecture doesn't merely present multiple choices and options, and say "use your best judgment": it tells you what choices to ma
Computer Networking: A Top-Down Approach book cover68

Computer Networking: A Top-Down Approach

James F. Kurose, Keith W. Ross

4.1
Building on the successful top-down approach of previous editions, the Fourth Edition of Computer Networking continues with an early emphasis on application-layer paradigms and application programming interfaces, encouraging a hands-on experience with protocols and networking concepts. With this edition, Kurose and Ross bring the issues of network security to the forefront, along with integration
Applied Cryptography: Protocols, Algorithms, and Source Code in C book cover69

Applied Cryptography: Protocols, Algorithms, and Source Code in C

Bruce Schneier

4.1
"…the best introduction to cryptography I've ever seen. … The book the National Security Agency wanted never to be published." –Wired Magazine

"…monumental… fascinating… comprehensive… the definitive work on cryptography for computer programmers…" –Dr. Dobb's Journal

"…easily ranks as one of the most authoritative in its field." —PC Magazine

"…the bible of code hackers." –The Millennium Whole Earth
Advanced Programming in the UNIX Environment book cover70

Advanced Programming in the UNIX Environment

W. Richard Stevens

4.1
If you are an experienced C programmer with a working knowledge of UNIX, you cannot afford to be without this up-to-date tutorial on the system call interface and the most important functions found in the ANSI C library. Rich Stevens describes more than 200 system calls and functions; since he believes the best way to learn code is to read code, a brief example accompanies each description.Buildin
Head First Java book cover71

Head First Java

Kathy Sierra and Bert Bates

4.1
Learning a complex new language is no easy task especially when it s an object-oriented computer programming language like Java. You might think the problem is your brain. It seems to have a mind of its own, a mind that doesn't always want to take in the dry, technical stuff you're forced to study.

The fact is your brain craves novelty. It's constantly searching, scanning, waiting for something un
Machine Learning book cover72

Machine Learning

Tom M. Mitchell

4.1
Mitchell covers the field of machine learning, the study of algorithms that allow computer programs to automatically improve through experience and that automatically infer general laws from specific data.
Computer Organization & Design: The Hardware/Software Interface book cover73

Computer Organization & Design: The Hardware/Software Interface

David A. Patterson, John L. Hennessy

4.1
The performance of software systems is dramatically affected by how well software designers understand the basic hardware technologies at work in a system. Similarly, hardware designers must understand the far-reaching effects their design decisions have on software applications. For readers in either category, this classic introduction to the field provides a look deep into the computer. It demon
The Art of Computer Programming, Volume 2: Seminumerical Algorithms book cover74

The Art of Computer Programming, Volume 2: Seminumerical Algorithms

Donald E. Knuth

4.1
The bible of all fundamental algorithms and the work that taught many of today's software developers most of what they know about computer programming. -Byte, September 1995 I can't begin to tell you how many pleasurable hours of study and recreation they have afforded me! I have pored over them in cars, restaurants, at work, at home... and even at a Little League game when my son wasn't in the li
The Art of Computer Programming: Volume 3: Sorting and Searching book cover75

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

Donald E. Knuth

4.1
The first revision of this third volume is the most comprehensivesurvey of classical computer techniques for sorting and searching. It extends thetreatment of data structures in Volume 1 to consider both large and smalldatabases and internal and external memories. The book contains a selection ofcarefully checked computer methods, with a quantitative analysis of theirefficiency. Outstanding featur
Building Microservices: Designing Fine-Grained Systems book cover76

Building Microservices: Designing Fine-Grained Systems

Sam Newman

4.1
Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and
The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World book cover77

The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World

Pedro Domingos

4.1
A thought-provoking and wide-ranging exploration of machine learning and the race to build computer intelligences as flexible as our own
In the world's top research labs and universities, the race is on to invent the ultimate learning algorithm: one capable of discovering any knowledge from data, and doing anything we want, before we even ask. In The Master Algorithm, Pedro Domingos lifts the veil
Java Concurrency in Practice book cover78

Java Concurrency in Practice

Brian Goetz

4.0
"I was fortunate indeed to have worked with a fantastic team on the design and implementation of the concurrency features added to the Java platform in Java 5.0 and Java 6. Now this same team provides the best explanation yet of these new features, and of concurrency in general. Concurrency is no longer a subject for advanced users only. Every Java developer should read this book."
--Martin Buchhol
Eloquent Javascript: A Modern Introduction to Programming book cover79

Eloquent Javascript: A Modern Introduction to Programming

Marijn Haverbeke

4.0
Completely revised and updated, this best-selling introduction to programming in JavaScript focuses on writing real applications.

Eloquent JavaScript dives into the JavaScript language to show programmers how to write elegant, effective JavaScript code. Like any good programming book, Eloquent JavaScript begins with fundamentals--variables, control structures, functions, and data structures--then m
Purely Functional Data Structures book cover80

Purely Functional Data Structures

Chris Okasaki

4.0
Most books on data structures assume an imperative language such as C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme. This book describes data structures from the point of view of functional languages, with examples, and presents design techniques that allow programmers to develop their own functiona
Automate the Boring Stuff with Python: Practical Programming for Total Beginners book cover81

Automate the Boring Stuff with Python: Practical Programming for Total Beginners

Al Sweigart

4.0
If you've ever spent hours renaming files or updating hundreds of spreadsheet cells, you know how tedious tasks like these can be. But what if you could have your computer do them for you?

In "Automate the Boring Stuff with Python," you'll learn how to use Python to write programs that do in minutes what would take you hours to do by hand no prior programming experience required. Once you've master
Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation book cover82

Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation

Jez Humble and David Farley

4.0
Winner of the 2011 Jolt Excellence Award!

Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration betwe
The UNIX Programming Environment (Prentice-Hall Software Series) book cover83

The UNIX Programming Environment (Prentice-Hall Software Series)

Brian W. Kernighan, Rob Pike

4.0
In their preface, the authors explain, "This book is meant to help the reader learn how to program in C. It contains tutorial introduction to get new users started as soon as possible, separate chapters on each major feature, and a reference manual. Most of the treatment is based on reading, writing, and revising examples, rather than on mere statement of rules. For the most part, the examples are
Quantum Computing Since Democritus book cover84

Quantum Computing Since Democritus

Scott Aaronson

4.0
Written by noted quantum computing theorist Scott Aaronson, this book takes readers on a tour through some of the deepest ideas of maths, computer science and physics. Full of insights, arguments and philosophical perspectives, the book covers an amazing array of topics. Beginning in antiquity with Democritus, it progresses through logic and set theory, computability and complexity theory, quantum
The Linux Command Line, 2nd Edition: A Complete Introduction book cover85

The Linux Command Line, 2nd Edition: A Complete Introduction

William Shotts

4.0
You've experienced the shiny, point-and-click surface of your Linux computer--now dive below and explore its depths with the power of the command line.

The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell (or command line). Along the way you'll learn the timeless skills handed down by generations of experienced, mou
A Discipline of Programming book cover86

A Discipline of Programming

Edsger W. Dijkstra

4.0
Think Python: How to Think Like a Computer Scientist book cover87

Think Python: How to Think Like a Computer Scientist

Allen B. Downey

4.0
If you want to learn how to program, working with Python is an excellent way to start. This hands-on guide takes you through the language a step at a time, beginning with basic programming concepts before moving on to functions, recursion, data structures, and object-oriented design. This second edition and its supporting code have been updated for Python 3.

Through exercises in each chapter, you'l
Operating Systems: Three Easy Pieces book cover88

Operating Systems: Three Easy Pieces

Remzi Arpaci-Dusseau and Andrea Arpaci-Dussea

4.0
A book about modern operating systems. Topics are broken down into three major conceptual pieces: Virtualization, Concurrency, and Persistence. Includes all major components of modern systems including scheduling, virtual memory management, disk subsystems and I/O, file systems, and even a short introduction to distributed systems.
The Practice of Programming (Addison-Wesley Professional Computing Series) book cover89

The Practice of Programming (Addison-Wesley Professional Computing Series)

Brian W. Kernighan, Rob Pike

4.0
With the same insight and authority that made their book The Unix programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual programmers more effective and productive.
Mastering Regular Expressions book cover90

Mastering Regular Expressions

Jeffrey E. F. Friedl

4.0
Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard features in a wide range of languages and popular tools, including Perl, Python, Ruby, Java, VB.NET and C# (and any language using the .NET Framework), PHP, and MySQL.

If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you alr
Growing Object-Oriented Software, Guided by Tests book cover91

Growing Object-Oriented Software, Guided by Tests

Steve Freeman, Nat Pryce

4.0
Foreword by Kent Beck "The authors of this book have led a revolution in the craft of programming by controlling the environment in which software grows." --Ward Cunningham "At last, a book suffused with code that exposes the deep symbiosis between TDD and OOD. This one's a keeper." --Robert C. Martin "If you want to be an expert in the state of the art in TDD, you need to understand the ideas i
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 book cover92

Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14

Scott Meyers

4.0
Coming to grips with C++11 and C++14 is more than a matter of familiarizing yourself with the features they introduce (e.g., auto type declarations, move semantics, lambda expressions, and concurrency support). The challenge is learning to use those features effectively--so that your software is correct, efficient, maintainable, and portable. That's where this practical book comes in. It describes
Fluent Python: Clear, Concise, and Effective Programming book cover93

Fluent Python: Clear, Concise, and Effective Programming

Luciano Ramalho

4.0
Python's simplicity lets you become productive quickly, but this often means you aren't using everything it has to offer. With this hands-on guide, you'll learn how to write effective, idiomatic Python code by leveraging its best and possibly most neglected features. Author Luciano Ramalho takes you through Python's core language features and libraries, and shows you how to make your code shorter,
HTML and CSS: Design and Build Websites book cover94

HTML and CSS: Design and Build Websites

Jon Duckett

4.0
Every day, more and more people want to learn some HTML and CSS. Joining the professional web designers and programmers are new audiences who need to know a little bit of code at work (update a content management system or e-commerce store) and those who want to make their personal blogs more attractive. Many books teaching HTML and CSS are dry and only written for those who want to become program
Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers) book cover95

Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)

Michael T. Nygard

4.0
Whether it's in Java, .NET, or Ruby on Rails, getting your application ready to ship is only half the battle. Did you design your system to survivef a sudden rush of visitors from Digg or Slashdot? Or an influx of real world customers from 100 different countries? Are you ready for a world filled with flakey networks, tangled databases, and impatient users?

If you're a developer and don't want to b
Computer Science Distilled: Learn the Art of Solving Computational Problems book cover96

Computer Science Distilled: Learn the Art of Solving Computational Problems

Wladston Ferreira Filho and Raimondo Pictet

4.0
A foolproof walkthrough of must-know computer science concepts. Designed for readers who don't need the academic formality, it's a fast and easy computer science guide. It teaches essential concepts for people who want to program computers effectively. First, it introduces discrete mathematics, then it exposes the most common algorithms and data structures. It also shows the principles that make c
Information Theory, Inference and Learning Algorithms book cover97

Information Theory, Inference and Learning Algorithms

David J. C. MacKay

4.0
Information theory and inference, often taught separately, are here united in one entertaining textbook. These topics lie at the heart of many exciting areas of contemporary science and engineering - communication, signal processing, data mining, machine learning, pattern recognition, computational neuroscience, bioinformatics, and cryptography. This textbook introduces theory in tandem with appli
Algorithms book cover98

Algorithms

Sanjoy Dasgupta, Christos Papadimitriou, et al.

4.0
This text, extensively class-tested over a decade at UC Berkeley and UC San Diego, explains the fundamentals of algorithms in a story line that makes the material enjoyable and easy to digest. Emphasis is placed on understanding the crisp mathematical idea behind each algorithm, in a manner that is intuitive and rigorous without being unduly formal. Features include: The use of boxes to strengthen
Site Reliability Engineering: How Google Runs Production Systems book cover99

Site Reliability Engineering: How Google Runs Production Systems

Niall Richard Murphy, Betsy Beyer, et al.

4.0
The overwhelming majority of a software system's lifespan is spent in use, not in design or implementation. So, why does conventional wisdom insist that software engineers focus primarily on the design and development of large-scale computing systems?

In this collection of essays and articles, key members of Google's Site Reliability Team explain how and why their commitment to the entire lifecycle
Computer Architecture: A Quantitative Approach book cover100

Computer Architecture: A Quantitative Approach

John L. Hennessy, David A. Patterson

4.0

The computing world today is in the middle of a revolution: mobile clients and cloud computing have emerged as the dominant paradigms driving programming and hardware innovation today. The Fifth Edition of Computer Architecture focuses on this dramatic shift, exploring the ways in which software and technology in the cloud are accessed by cell phones, tablets, laptops, and other mobile computing d