Fans pick 40 books like Principles of Compiler Design

By Alfred V. Aho, Jeffrey D. Ullman,

Here are 40 books that Principles of Compiler Design fans have personally recommended if you like Principles of Compiler Design. Shepherd is a community of 12,000+ authors and super readers sharing their favorite books with the world.

When you buy books, we may earn a commission that helps keep our lights on (or join the rebellion as a member).

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

Yehonathan Sharvit Author Of Data-Oriented Programming

From my list on become a great developer.

Why am I passionate about this?

I boast a two-decade-long career in the software industry. Over the years, I have diligently honed my programming skills across a multitude of languages, including JavaScript, C++, Java, Ruby, and Clojure. Throughout my career, I have taken on various management roles, from Team Leader to VP of Engineering. No matter the role, the thing I have enjoyed the most is to make complex topics easy to understand.

Yehonathan's book list on become a great developer

Yehonathan Sharvit Why did Yehonathan love this book?

This book profoundly influenced my thinking process, combining the worlds of mathematics, art, and music. I was captivated by how the book explores the deep connections between Gödel’s incompleteness theorems, Escher’s art, and Bach’s art of counterpoint.

The book’s puzzles and thought experiments pushed me to think more abstractly and critically. Despite being dense, I found it incredibly rewarding and eye-opening. I recommend this book to anyone interested in logic, creativity, and the nature of human thought. It’s a masterpiece!

By Douglas R. Hofstadter,

Why should I read it?

14 authors picked Gödel, Escher, Bach as one of their favorite books, and they share why you should read it.

What is this book about?

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 attain human intelligence. Goedel, Escher, Bach is a wonderful exploration of fascinating ideas at the heart of cognitive science: meaning, reduction, recursion, and much more.


Book cover of Gödel's Proof

David B. Black Author Of Wartime Software

From my list on teaching and inspiring the best programmers.

Why am I passionate about this?

I started programming in high school and wrote software in many domains for 30 years, from the early ARPA-net to massive credit card software. I wrote a FORTRAN compiler with one assistant in a year. I got hassled to do proper project management. Nightmare. It was all about inflated expectations instead of moving fast and winning. Then in 25 years of venture capital investing, I learned from many young companies how the little startups built quickly and well things that giants like Google literally could not get done. This book and my others spell out what I learned from the little guys who beat the giants.

David's book list on teaching and inspiring the best programmers

David B. Black Why did David love this book?

Nagel’s book is the most understandable explanation I’ve found about one of the most cosmically seminal math proofs: Godel’s incompleteness theorem.

It takes the idea of recursion and self-reference to the ultimate conclusion about truth, understanding, and boundaries of existence. This may sound hootie-tootie, but think of the sequence of abstraction in math: arithmetic, algebra, calculus, etc.

Once you add in recursion (self-reference), you’ve got the most important concepts underlying true understanding and productivity in software – something never discussed in computer science, and certainly not in practical programming.

Think about the so-called Von Neumann computer architecture, which underlies all modern computers – instructions are data, stored in the same place as ordinary data, and some instructions write data that are instructions. This is recursion taken to the next level. 

By Ernest Nagel,

Why should I read it?

2 authors picked Gödel's Proof as one of their favorite books, and they share why you should read it.

What is this book about?

An accessible explanation of Kurt Goedel's groundbreaking work in mathematical logic
In 1931 Kurt Goedel published his fundamental paper, "On Formally Undecidable Propositions of Principia Mathematica and Related Systems." This revolutionary paper challenged certain basic assumptions underlying much research in mathematics and logic. Goedel received public recognition of his work in 1951 when he was awarded the first Albert Einstein Award for achievement in the natural sciences-perhaps the highest award of its kind in the United States. The award committee described his work in mathematical logic as "one of the greatest contributions to the sciences in recent times."
However, few…


Book cover of The Art of Computer Programming, Volume 4, Fascicle 1, The: Bitwise Tricks & Techniques; Binary Decision Diagrams

David B. Black Author Of Wartime Software

From my list on teaching and inspiring the best programmers.

Why am I passionate about this?

I started programming in high school and wrote software in many domains for 30 years, from the early ARPA-net to massive credit card software. I wrote a FORTRAN compiler with one assistant in a year. I got hassled to do proper project management. Nightmare. It was all about inflated expectations instead of moving fast and winning. Then in 25 years of venture capital investing, I learned from many young companies how the little startups built quickly and well things that giants like Google literally could not get done. This book and my others spell out what I learned from the little guys who beat the giants.

David's book list on teaching and inspiring the best programmers

David B. Black Why did David love this book?

This is the definitive book series on algorithms and the core of computer programming.

Unlike most such books, Knuth is a real programmer, deep into the details of the craft, to the point of creating his own assembler language and typesetting generation system. It’s partly the substance of the algorithms and their analysis, but even more is the way he models a way of thinking about and solving complexity that makes this a must-read series.

By Donald Knuth,

Why should I read it?

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

What is this book about?

Finally, after a wait of more than thirty-five years, the first part of Volume 4 is at last ready for publication. Check out the boxed set that brings together Volumes 1 - 4A in one elegant case, and offers the purchaser a $50 discount off the price of buying the four volumes individually.



The Art of Computer Programming, Volumes 1-4A Boxed Set, 3/e

ISBN: 0321751043









Art of Computer Programming, Volume 4, Fascicle 1, The: Bitwise Tricks & Techniques; Binary Decision Diagrams: Bitwise Tricks & Techniques; Binary Decision Diagrams



This multivolume work on the analysis of algorithms has long been recognized…


Book cover of The C Programming Language

Christopher Trudeau Author Of Django in Action

From my list on books for coders shelf.

Why am I passionate about this?

My first computer was an early IBM PC back when all my friends had Commodores they used for gaming. Not being able to share their games meant I had to do something else, so I read the Introduction to Basic book that came in the box. I’ve been coding, reading about coding, writing about coding, teaching about coding, and talking about coding ever since. The world of technology moves so fast that it is hard to keep up. If you’ve taken one of my courses or listened to The Real Python Podcast, I hope you’ve heard about my passion for the topic. 

Christopher's book list on books for coders shelf

Christopher Trudeau Why did Christopher love this book?

I learned my first programming language as a kid, and Basic always felt like a beginner’s language. It wasn’t until I started writing C that I felt in control of the machine. This book is a classic and was on every C-programmer’s shelf in the 80s and 90s. It isn’t the easiest read but is remarkably comprehensive for a relatively thin volume. The fact that it has been in print for over 30 years tells you something about its staying power.

Nowadays, I tend to code in higher level languages, but every once and a while I dip down, getting closer to the bare metal, and brush this baby off. It is probably one of my most well-worn books.

By Dennis M. Ritchie, Brian W. Kernighan,

Why should I read it?

4 authors picked The C Programming Language as one of their favorite books, and they share why you should read it.

What is this book about?

Known as the bible of C, this classic bestseller introduces the C programming language and illustrates algorithms, data structures, and programming techniques.


Book cover of High Performance Django

Arun Ravindran Author Of Django Design Patterns and Modern Best Practices

From my list on Django for building solid web apps in Python.

Why am I passionate about this?

I’ve been dabbling in Python for the last 22 years. I am a regular speaker at Pycon India ever since its inception. Most of my talks are related to Django. I host arunrocks.com where I write tutorials, and articles and publish screencasts on several Django and Python topics. My initial screencast titled "Building a blog in 30 mins with Django" is one of the most popular screencasts for beginners in Django. I’m a developer member of the Django Software Foundation.

Arun's book list on Django for building solid web apps in Python

Arun Ravindran Why did Arun love this book?

Building scalable and performant web applications is both an art and a science. This book focused on such techniques and hence goes beyond what most books on Django try to cover. Anyone running a Django site under heavy load will definitely learn a few tips from this book. However, it is light on explanations and expects you to figure out many things from reading the examples.

By Peter Baumgartner, Yann Malet,

Why should I read it?

1 author picked High Performance Django as one of their favorite books, and they share why you should read it.


Book cover of The Art of Computer Programming

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

From my list 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.

Federico's book list on the theory and practice of computer programming

Federico Kereki Why did Federico 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 Managing Humans: Biting and Humorous Tales of a Software Engineering Manager

Jaime Buelta Author Of Python Automation Cookbook

From my list on for Python and non-Python developers.

Why am I passionate about this?

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.

Jaime's book list on for Python and non-Python developers

Jaime Buelta Why did Jaime love this book?

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.

By Michael Lopp,

Why should I read it?

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

What is this book about?

Managing Humans is a selection of the best essays from Michael Lopp's popular website Rands in Repose(www.randsinrepose.com). Lopp is one of the most sought-after IT managers in Silicon Valley, and draws on his experiences at Apple, Netscape, Symantec, and Borland. This book reveals a variety of different approaches for creating innovative, happy development teams. It covers handling conflict, managing wildly differing personality types, infusing innovation into insane product schedules, and figuring out how to build lasting and useful engineering culture. The essays are biting, hilarious, and always informative.


Book cover of The Science of Programming

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

From my list 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.

Federico's book list on the theory and practice of computer programming

Federico Kereki Why did Federico 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 Understanding Cryptography: A Textbook for Students and Practitioners

Dominik Merli Author Of Engineering Secure Devices: A Practical Guide for Embedded System Architects and Developers

From my list on embedded system security enthusiasts.

Why am I passionate about this?

I’ve been playing with computers and electronics since childhood. I even supported the people in my village with their computer issues back then. During my studies in electrical engineering, I learned how to solve technical challenges with structured approaches. At this time, I became fascinated by topics like cryptography and embedded system security. The books on this list helped me understand important concepts and practical real-world obstacles. I hope they are also of value to you!

Dominik's book list on embedded system security enthusiasts

Dominik Merli Why did Dominik love this book?

When I first heard about cryptography at university, it sounded like mathematical magic. After looking into some randomly chosen crypto books, I was discouraged from digging deeper because they were full of math details.

Understanding Cryptography was different. It was aimed at engineering students like me, and it provided me with the most relevant facts necessary for designing secure devices. Since then, it has always been a great reference book for me.

By Christof Paar, Jan Pelzl,

Why should I read it?

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

What is this book about?

Cryptography is now ubiquitous - moving beyond the traditional environments, such as government communications and banking systems, we see cryptographic techniques realized in Web browsers, e-mail programs, cell phones, manufacturing systems, embedded software, smart buildings, cars, and even medical implants. Today's designers need a comprehensive understanding of applied cryptography.

After an introduction to cryptography and data security, the authors explain the main techniques in modern cryptography, with chapters addressing stream ciphers, the Data Encryption Standard (DES) and 3DES, the Advanced Encryption Standard (AES), block ciphers, the RSA cryptosystem, public-key cryptosystems based on the discrete logarithm problem, elliptic-curve cryptography (ECC), digital…


Book cover of Foundation ActionScript 3.0 Animation: Making Things Move!

Scott Murray Author Of Unstuck: Javascript

From my list on learning how to code interactive graphics.

Why am I passionate about this?

I’ve been making web pages since the World Wide Web began in the mid-1990s. Back then, the web was visually quite sparse. It wasn’t until the late 2000s that new browser capabilities let the web get visually interesting and an exciting place for interactive graphics. Graphics are great: they can be informational (like charts and maps) or purely aesthetic. My personal journey of learning to code interactive graphics has been so rewarding that I’ve shared the love with others through teaching creative coding workshops and undergraduate courses. If you’re new to coding or computer graphics, I hope you’ll give one of these books a try!

Scott's book list on learning how to code interactive graphics

Scott Murray Why did Scott love this book?

Okay, hear me out. Yes, this book was published in 2007. Yes, it’s ostensibly about ActionScript, the coding language in Flash, which no one uses anymore. But you won’t use this book to learn ActionScript or Flash: You’ll use it to learn how to make things move with code, in any language. You’ll skip over the ActionScript-specific parts in favor of the lucid explanations and helpful illustrations. Your visual brain will appreciate seeing how sines, cosines, and tangents are relevant—and necessary!—to make digital things move. (Your heart will wish your brain had paid better attention in trigonometry class years earlier, but hey, no regrets!) The chapters “Trigonometry for Animation” and “Velocity and Acceleration” alone are worth the purchase price.

By Keith Peters,

Why should I read it?

1 author picked Foundation ActionScript 3.0 Animation as one of their favorite books, and they share why you should read it.

What is this book about?

This is the first definitive and authoritative book available on ActionScript 3 animation techniques. ActionScript animation is a very popular discipline for Flash developers to learn. The essential skill set has been learned by many Flash developers through the first edition of this book. This has now been updated to ActionScript 3, Adobe's new and improved scripting language. All of the code has been updated, and some new techniques have been added to take advantage of ActionScript 3's new features, including the display list and new event architecture. The code can be used with the Flash 9 IDE, Flex Builder…


Book cover of Gödel, Escher, Bach: An Eternal Golden Braid
Book cover of Gödel's Proof
Book cover of The Art of Computer Programming, Volume 4, Fascicle 1, The: Bitwise Tricks & Techniques; Binary Decision Diagrams

Share your top 3 reads of 2024!

And get a beautiful page showing off your 3 favorite reads.

1,593

readers submitted
so far, will you?

5 book lists we think you will like!

Interested in computer science, algorithms, and artificial intelligence?

Computer Science 35 books
Algorithms 36 books