The Little Schemer series is a book series about the Scheme programming language, but it’s more an introduction to programming in general, with the later books getting into more advanced topics.

They’re written as a dialog between two people, in an unusual format sort of Socratic style. And they have a charming sense of humor. The art is full of elephants doing various things, and sometimes there are pages left intentionally blank for things like jelly stains.

They make no assumptions about prior programming experience, which can come off strange at first since they don’t actually explain the language in the usual way. I think once you get used to it, it’s an excellent approach. I definitely didn’t like The Little Schemer when I first encountered it, but have since grown to appreciate them, and I own almost the whole series.

Example from The Little Schemer

The first book starts like this. Each page is basically a table like the following.

Is it true that this is an atom? atomatomYes, because atomatom is a string of characters beginning with the letter a
Is it true that this is an atom? turkeyturkeyYes, because turkeyturkey is a string of characters beginning with a letter.

And it goes from there introducing principles by example, sometimes exhaustively.

The Series

The series to date is made up of the following books:

  • The Little Schemer — introduces programming as an extension of algebra
  • The Seasoned Schemer — this one continues where the previous one left off going further into more detailed topics.
  • The Reasoned Schemer — this one is about logic programming using a language called miniKanren
  • The Little Typer — an introduction to dependent types. These are the deep end of type systems, where you can use the type system to teach the compiler things that are dependent on the values, e.g. that the Array.pop()Array.pop() method always reduces the length of the array by one, unless the array is already empty.
  • The Little Prover — introduces inductive proofs as a way to determine facts about computer programs. I haven’t finished reading this one yet.
  • The Little Learner — “introduces deep learning from the bottom up”. I don’t have this one yet, so I can’t speak to it. But it looks intriguing.

The Little MLer

I don’t have The Little MLer yet either, and it’s more of an adjacent book than in the same series, since it uses Standard ML instead of Scheme.

Footnotes

  1. Usually for links to books, I link to Bookshop.org, but for these, it’s easier to link to MIT Press because they have them all.