Best Computer Science & Programming Books

best computer programming software books overcoded

Becoming a better software developer is a multi-discipline, life-long endeavor. One benefits from the study of programming languages, software engineering principles, computer science, mathematics, and so much more. What’s more—these fields of study may not even account for the sources of creative inspiration for many!

Over the years, there have been a number of books that have left a lasting influence in fields related to computer science and software development. From Turing’s 1936 paper On Computable Numbers, with an application to the Entscheidungsproblem to the  “Gang of Four’s” 1994 book titled Design Patterns: Elements of Reusable Object-Oriented Software—there have been many perspectives immortalized in the pages of textbooks, academic papers, and reference manuals.

Note: This article is a Work in Progress

Essential Books

Below you’ll find a list of iconic books within the fields of computer science, programming, software development, and even math. In some cases, books may come from other fields of study entirely!

This list is an ever-evolving reference presented in no particular order. Feel free to contact me and plead your case if you believe a certain book should be included, omitted, or altered in its presentation.

Agile Software Development, Principles, Patterns, and Practices – Robert Martin, 2002

agile software development martin overcoded

This book was written by renowned Computer Scientist Robert Martin (a.k.a. Uncle Bob) and outlined the SOLID principles of Object-Oriented Design (OOD). Heralded as one of the pioneers of AGILE software development, this book covers theory, case studies, and is loaded with examples of common design patterns.

ISBN: 0135974445

Year: 2003

Availability: //

Structured Analysis and System Specification – Tom DeMarco (1979)

Structured Analysis and System Specification tom demarco overcoded

In this classic systems design book, DeMarco lays bare a survey of analyzing data, processes, and systems integration. He makes striking, simple, and convincing arguments for the application of such concepts as Data Flow Diagrams expressing unique approaches for “interviewing” data.

ISBN: 0138543801

Year: 1979

Availability: //

Object-Oriented Software Construction – Bertrand Meyer (1988)

Object Oriented Software Construction meyer 1994

This book is widely recognized as the conceptual framework for modern Object-Oriented Programming (OOP). The first edition was published in 1988 and successive editions provided significant expansions and revisions (think thousands of pages). This book often referred to as OOSC, focuses on the principles of correctness, robustness, extendibility, and reusability as they relate to software development. Key focus includes the abstract data type (ADT) as a basis for modern OOP concepts like inheritance, polymorphism, generics, and objects.

ISBN: 0136291554

Year: 1997 (2nd edition)

Availability: //

Headfirst Design Patterns: A Brain-Friendly Guide – Eric Freeman & Elizabeth Rosman

4 headfirst design patterns overcoded

This book is a great high-level introduction to some of the most popular and widely-used design patterns used in object-oriented programming. This book covers patterns like The Observer, Decorator, Factory, and Singleton patterns with gentle introductions, basic code examples, and useful discussions that avoid the overtly technical.

ISBN: 978-0596007126


Availability: //


The books on this ever-evolving list are those that stand out among computer science, programming, and software engineering books. The subject matter and interdisciplinary range of these books are immense.

There is no single qualifying scope for a book to make or be excluded from this list. Strong consideration is given to seminal and notable updates to new conceptual topics and applications. A book’s exclusion from this list has no implication as to its quality, depth, breadth, or utility. Want to see a book added? Drop us a line.

Zαck West
Full-Stack Software Engineer with 10+ years of experience. Expertise in developing distributed systems, implementing object-oriented models with a focus on semantic clarity, driving development with TDD, enhancing interfaces through thoughtful visual design, and developing deep learning agents.