The best books on the theory and practice of computer programming

Why am I passionate about this?

I have been working with computers for decades now – having started with programmable handheld calculators and working my way up and down through mainframes, mini- and micro-computers. I always thought there is an art to writing software, and that good software can be read and admired. Maintainability, readability, and testability are some core needs for software, and after going through many programming paradigms, I feel that functional programming (FP) is the way to go – and several modern web frameworks agree. JavaScript (and now, TypeScript) are essential to web development, and I wanted to show how FP could be successfully used with those languages, and thus my book.


I wrote...

Mastering JavaScript Functional Programming: Write clean, robust, and maintainable web and server code using functional JavaScript and TypeScript

By Federico Kereki,

Book cover of Mastering JavaScript Functional Programming: Write clean, robust, and maintainable web and server code using functional JavaScript and TypeScript

What is my book about?

Functional programming is a programming paradigm that uses functions for developing software. This book is filled with examples that enable you to leverage the latest JavaScript and TypeScript versions to produce modern and clean code, as well as teach you how to apply functional programming techniques to develop more efficient algorithms, write more concise code, and simplify unit testing.

The book provides comprehensive coverage of the major topics in functional programming to produce shorter, clearer, and testable programs. By the end of it, you’ll have developed the practical programming skills needed to confidently enhance your applications by adding functional programming to wherever it’s most suitable.

Shepherd is reader supported. When you buy books, we may earn an affiliate commission.

The books I picked & why

Book cover of The Art of Computer Programming

Federico Kereki Why did I love this book?

This multi-volume book is, for me, a masterpiece that goes far beyond just coding or algorithms or data structures, and serves as a profound exploration of algorithmic thinking and computer science's theoretical foundations, going deeply into the performance of algorithms and the behavior of data structures.

Knuth's meticulous approach, coupled with his clear and engaging prose (with occasional touches of humor) clearly explains complex concepts, and shows a deep understanding of the artistry inherent in solving computational problems.

Bill Gates said that anybody who went through all its volumes would get a job at his company, and I surely agree! I would recommend this book both for novice or seasoned programmers, because you will always find invaluable insights in it.

By Donald Knuth,

Why should I read it?

1 author picked The Art of Computer Programming as one of their favorite books, and they share why you should read it.

What is this book about?

Check out the boxed set that brings together Volumes 1 - 4B in one elegant case.

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

ISBN: 9780137935109

Art of Computer Programming, Volume 1, Fascicle 1, The: MMIX -- A RISC Computer for the New Millennium

This multivolume work on the analysis of algorithms has long been recognized as the definitive description of classical computer science. The three complete volumes published to date already comprise a unique and invaluable resource in programming theory and practice. Countless readers have spoken about the profound personal influence of Knuth's writings. Scientists have marveled at…


Book cover of A Discipline of Programming

Federico Kereki Why did I love this book?

This thin but quite fulfilling book is a compact yet profound exploration of proven program correctness, probably one of the first texts to focus on that topic.

Dijkstra's emphasis on mathematical rigor and disciplined thinking reshapes how programmers approach problem-solving. The author imparts essential principles of program construction, advocating for clarity and precision in code, and leading to cultivating a disciplined mindset, and fostering a deep appreciation for the art and science of programming.

Despite its age, all its knowledge is fully valid, and I’d give the book to every programmer so they can reach a higher level of quality.

By Edsger W. Dijkstra,

Why should I read it?

1 author picked A Discipline of Programming as one of their favorite books, and they share why you should read it.

What is this book about?

Clean wraps, corners square, lay flat. No creases to the spine, or hinge. Small frayed spot at the top of the spine. No previous owner's name, no other marks in text. Well kept copy.


Book cover of The Science of Programming

Federico Kereki Why did I love this book?

This book is essential in that it follows a systematic and scientific approach to software development, advocating for clarity in expressing algorithms, providing a rigorous framework for designing and reasoning about programs, and, fundamentally, always focusing on formal methods and mathematical techniques to ensure correctness and efficiency in programming code.

Most importantly, the book doesn’t just show you how to prove programs correct, but also teaches how to arrive from a definition to an efficient and correct solution, so I would recommend this to every developer.


By David Gries,

Why should I read it?

1 author picked The Science of Programming as one of their favorite books, and they share why you should read it.

What is this book about?

Describes basic programming principles and their step-by-
step applications.Numerous examples are included.


Book cover of Design Patterns: Elements of Reusable Object-Oriented Software

Federico Kereki Why did I love this book?

Of all the books I recommend, this is practically a sort of personal bible, which I very frequently consult.

This book doesn't just show you how to code; with realistic patterns and real-world examples, it's like having experienced mentors guiding your every keystroke. These patterns aren't just snippets; they're blueprints for building robust, flexible software.

I think the book is practically mandatory for all developers, novice or seasoned. It transformed how I approach problems, teaching me techniques I use daily in systems design and development.

By Erich Gamma, Richard Helm, Ralph Johnson , John Vlissides

Why should I read it?

1 author picked Design Patterns as one of their favorite books, and they share why you should read it.

What is this book about?

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 describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the…


Book cover of Refactoring: Improving the Design of Existing Code

Federico Kereki Why did I love this book?

This book is different from the others I recommended, because its focus is not really on creating algorithms, but rather on how to improve code with a systematic process, keeping functionality but enhancing quality.

The author shows several practical techniques that he applies to real-world problems and empower you to elevate your code's quality and adapt it seamlessly to changing needs. It's not just about writing code; it's about becoming a more effective and confident developer.

I consider this book a companion on the journey to mastering the craft of coding. With it, you’ll always be able to achieve higher-quality code, no matter the original version of the code.

By Martin Fowler,

Why should I read it?

2 authors picked Refactoring as one of their favorite books, and they share why you should read it.

What is this book about?

Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use…


You might also like...

Book cover of Adventures in the Radio Trade: A Memoir

Joe Mahoney Author Of Adventures in the Radio Trade: A Memoir

New book alert!

Why am I passionate about this?

Author Broadcaster Family man Dog person Aspiring martial artist

Joe's 3 favorite reads in 2023

What is my book about?

Adventures in the Radio Trade documents a life in radio, largely at Canada's public broadcaster. It's for people who love CBC Radio, those interested in the history of Canadian Broadcasting, and those who want to hear about close encounters with numerous luminaries such as Margaret Atwood, J. Michael Straczynski, Stuart McLean, Joni Mitchell, Peter Gzowski, and more. And it's for people who want to know how to make radio.

Crafted with gentle humour and thoughtfulness, this is more than just a glimpse into the internal workings of CBC Radio. It's also a prose ode to the people and shows that make CBC Radio great.

By Joe Mahoney,

Why should I read it?

1 author picked Adventures in the Radio Trade as one of their favorite books, and they share why you should read it.

What is this book about?

"In dozens of amiable, frequently humorous vignettes... Mahoney fondly recalls his career as a Canadian Broadcasting Corporation radio technician in this memoir... amusing and highly informative."
— Kirkus Reviews

"What a wonderful book! If you love CBC Radio, you'll love Adventures in the Radio Trade. Joe Mahoney's honest, wise, and funny stories from his three decades in broadcasting make for absolutely delightful reading!
— Robert J. Sawyer, author of The Oppenheimer Alternative''

"No other book makes me love the CBC more."
— Gary Dunford, Page Six
***
Adventures in the Radio Trade documents a life in radio, largely at Canada's…


5 book lists we think you will like!

Interested in computer programming, computer science, and computers?

10,000+ authors have recommended their favorite books and what they love about them. Browse their picks for the best books about computer programming, computer science, and computers.

Computer Programming Explore 39 books about computer programming
Computer Science Explore 31 books about computer science
Computers Explore 28 books about computers