Every couple of years I reflect on the most influential books that I’ve read. Going back several years these are the books that I most remember from my university days and time working in industry that have influenced how I think.

Non-fiction and textbooks

**The Little MLer** by Matthias Felleisen

A whimsical set of discussions around a set of small Standard ML projects. Convey’s the large ideas in typed functional programming, concerning polymorphism, higher order functions and algebraic datatypes.

**Gödel, Escher, Bach** by Douglas Hofstadter

A strange discussion about formal systems and their occurrence in multiple domains of human thinking, from philosophy and linguistics to computer science. The book is highly non-linear and probably should be read in that fashion.

**Galois Theory** by Ian Stewart

Stewart’s short presentation of the subject works up to Abel-Ruffini theorem in a particularly elegant way, and much more concisely than Artin’s presentation.

**Calculus** by Michael Spivak

Although more a of a book on real analysis, it is a beautifully written book that covers the idea of calculus and real functions. The clarity of Spivak’s presentation and motivating examples is rare to find. Although it would be hard to teach this book in an introductory course, it is a must read after the fact.

**Mathematics, Form and Function** by Saunders MacLane

MacLane’s popular discussion about the large-scale structure of mathematics and the underlying common ideas that gave rise to his formalization of category theory. Should be required reading for first year math undergraduates to understand the ideas that drive mathematical discovery and unification.

**Number, the Language of Science** by Tobias Dantzig

Tobias discusses the historical concept of mathematics from the rudimentary counting of prehistoric man to the counterintuitive and bizarre ideas at the edges of modern math.

**The Book of Numbers** by John Conway

A whimsical book on number theory that I remember distinctively from my childhood. Probably the only children’s book that touches on complex analysis and hypersurreal numbers.

**Structure and Interpretation of Computer Programs** by Gerald Jay Sussman

The classical introductory computer science book in scheme. Widely considered a classic for good reasons, it really conveys the core ideas that underlying modern computing better than other introductory text. Even if you don’t know scheme, forcing yourself to implement the projects will increase your cross-language mental dexterity.

**Introduction to Functional Programming (1st Edition)** by Richard Bird and Philip Wadler

The beautiful introductory text that really conveys the elegance of the core ideas of typed functional programming. Every core idea is precisely motivated by the most perfect example of usage. This was the book that really turned me on to programming in Haskell.

**Types and Programming Languages** by Benjamin Pierce

Pierce’s book on type theory (TAPL) was revolutionary and has become the “bible” of programming language theory. Although some chapters are a little dated, the core ideas and algorithms are foundational to modern programming language design. Although this book is great at explaining the implementation of type-checkers there is not yet that covers the full end-to-end implementation of modern functional compilers.

**Software Foundations** by Benjamin Pierce

Software is the ground-breaking book about the methods of constructing machine verifiably correct software using the Coq proof assistant. On top of this it’s also one of the only thorough introductions to the progress and preservation proofs that underlying the core verification of language semantics.

**Artificial Intelligence** by Russell and Norvig

A great book on the many of the core ideas of Artificial Intelligence that emerged before the first AI winter. The chapter on knowledge representation is a bit dated and doesn’t yet cover some modern ideas like fluent calculus or advances in temporal logic.

**The Quest for Omega** by Gregory Chaitin

Chaitin’s popularized account of information theory and the derivation of the constant of his namesakes, the halting probability that represents the probability that a randomly constructed program will halt. Does a great job of detailing the many paradoxes that arise out of simple questions about computing.

**The Structure of Scientific Revolutions** by Thomas Kuhn

The most famous philosophy of science book of the last century. Kuhn challenged the then prevailing views of scientific progress and shed light on the social structure of how prevailing theories change and come to be accepted. Although many people disagree with some of the thesis, it’s a must read for any grad student working in the natural sciences.

**The Art of Doing Science and Engineering** by Richard Hamming

The notes from Richard Hamming’s lecture series mentoring young scientists and engineers about his experiences at Bell Labs. In particular his lecture about You and Your Research should be watched by everyone regardless of involvement in science.

**Category Theory** by Steve Awodey

Category theory is a outgrowth branch of abstract algebra with incredibly diverse applications. The most modern textbook on category, although the original MacLane texts are still excellent this tracks many of the more recent notational conventions and ideas.

**Visual Complex Analysis** by Tristan Needham

Tristan’s groundbreaking book on complex analysis was one of the first texts on this subject written in the age of modern computer graphing tools and sheds an amazing amount of geometric insight into an otherwise very abstract field of analysis.

**Geometric Algebra for Physicists** by Chris Doran

Doran’s book is the most thorough derivation of the core physical laws (Classical mechanics, Maxwell’s equations, Noether’s theorem, Dirac equation, Einstein field equation) from the geometric algebra perspective. There’s no new information per se, but the alternative formalism is often much more concise as in the case of the Maxwell’s equations.

**Tensor Calculus for Physics** by Dwight Neuenschwander

I spent several months studying the formalism for tensor calculus from the traditional texts and it was terrible. Many years later I discovered this book which distills all the core ideas needed for general relativity down into a book 1/6th the size.

**Term Rewriting and all That** by Franz Baader

A rather old book about a very niche topic: term rewriting. Term rewriting is a very general framework for building sets of transformations over symbols and their synthesis. It’s a very broad subject that finds applications compilers, type theory, knowledge representation and machine learning. It’s a shame it’s not studied more often.

**The Implementation of Functional Programming Languages** by Simon Peyton Jones

One of the most important books written on compiler design and largely the only resource *ever* written the full engineering details going into functional compilers.

**An Introduction to Analysis** Zaring

My favorite real analysis text that I read in conjunction to a course using Rudin. Has a much more casual presentation and motivates the core ideas much better than the usual lemma/proof chug of the canonical texts. This book has been out of print for 20 years, so good luck finding it.

**Functional Differential Geometry** by Gerald Jay Sussman

A implementation of the core ideas of differential geometry implemented in a computable form as a Scheme program.

**The C Programming Language** by Brian Kernighan and Dennis Ritchie

The book everyone learns C from, although a bit dated it still has a certain elegance to it’s minimalist approach to a minimalist language.

**Coders at Work** by Peter Siebel

A collection of interviews with some of he greatest programmers of our generation, and their perspectives on the state of the craft of programming. Particularly the interviews with Simon Peyton Jones and Joe Armstrong are particularly good.

**The Demon-Haunted World** Carl Sagan

Carl Sagan’s strangely prescient discussion about the role of science and scientific reasoning has in society. The main thesis is that the “candle” of scientific progress is a fragile construction that could very well be extinguished by ignorance and superstition.

Fiction, graphic novels and biographies.

**Diaspora** by Greg Egan

Diaspora focuses on post-human existence when humanity has “speciated” out into three separate transhuman species. It questions the meaning of human existence in a transhuman world where human desires are bound up up with ancestral human biology and what meaning do lives and desires have, and what serves as the basis of values when biology no longer forms a part of life. Also one of the only fiction to use the word “fiber bundle” as part of the story.

Every tunnel in the Mines was built from the steps of a watertight proof; every theorem, however deeply buried, could be traced back to every one of its assumptions.

**God Emperor of Dune** by Frank Herbert

The Dune series traces the lives of the Atreides family, whose patriarch Paul discovers a psychoactive substance called “spice” which unlocks his ability to perceive the future. Paul discovers the terrible truth of being an Oracle - the more a prophetic vision is fulfilled, the harder it is to avoid the rest of the vision; and the terrible ramifications a prescient messiahs and hero worship has for humanity’s long term future. In the final book, humanity is ruled by a all-knowing worm god trapped in the existential nightmare of his own prescience. One of the greatest series ever written in my option.

It has occurred to me more than once that holy boredom is good and sufficient reason for the invention of free will.

**Prelude to Foundation** by Issac Asimov

Asimov’s seminal work about the collapse and rebirth of a advanced galactic-spanning civilization and the mathematical cult that architects the future course of human history to a new golden age.

We’ve been blinded by Seldon’s psychohistory, one of the first propositions of which is that the individual does not count, does not make history, and that complex social and economic factors override him, make a puppet out of him.

**Anathem** by Neal Stephenson

In a fictional world a series of technological catastrophes force the planet’s scientists, scholars and philosophers - known as the avout — to live apart from the ‘Sæcular world’ of society at large and are not permitted access to modern technology. The avout spend their days engaged in theoretical research until another plant-wide catastrophe forces them to emerge from their cloisted existence.

And it happened all the time that the compromise between two perfectly rational alternatives was something that made no sense at all.

**The Man Who Loved Only Numbers** by Paul Hoffman

Paul Erdős was one of the most prolific mathematicians of the 20th century, and simultaneously one of the most eccentric people who ever lived. He’s particularly known for monumental contributions to Ramsey theory and combinatorics.

As a joke I said, “What is the purpose of Life?” “Proof and conjecture, and keep the Supreme Fascist’s score low.”

**Einstein** by Walter Isaacson

Isaccson’s great biography of Einstein really outlines the struggle of Einstein’s life and the humanity of one of the greatest physicists beyond just the Annus Mirabilis years. In particular his accounts of the war and the details of his personal life are much more sad than one might expect.

When you write biographies, whether it’s about Ben Franklin or Einstein, you discover something amazing: They are human.

**The Culture Series** by Iain Banks

The culture series is one of the few modern scifi that posit a post-scarcity interstellar utopia. In the far future the galaxy is largely dominated by an alliance of advanced races called The Culture. The civilization is grapples with the moral and systematic issues present with artificial super-intelligence, trans-humanism, and dealings with both less advanced and transcendent species.

Reason shapes the future, but superstition infects the present.