We tiptoe on the broad shoulders of giants.

This course draws liberally from How to Design Programs (Felleisen, et al.). We’re also especially fond of Structure and Interpretation of Computer Programs (Abelson and Sussman with Sussman), Data Structures and Network Algorithms (Tarjan), and Introduction to Algorithms (Manber). We’ve also drawn on work by Chris Okasaki, Ralf Hinze, Guy Steele, and Manuel Blum. You should read these works and authors in the original.

Special thanks to the following people with whom we have had enlightening conversations, who have suggested some of the material for and exercises in this course, or who have helped us perform the preparatory work for it: Jeff Stix, Danny Yoo, Kathi Fisler, Matthias Felleisen, Prabhakar Ragde, John F. Hughes, Chris King, Guillaume Marceau, Chris Okasaki, Brendan Hickey, Philip Klein, Steve Reiss, and Amy Greenwald.

Very special thanks to the staff of cs019 from all its prior offerings.

The site’s primary typeface is IBM Plex Serif by Mike Abbink and Bold Monday, courtesy Google Fonts.

The site’s color scheme is Palette 196018 from ColorHunt.