- Felleisen, Findler, Flatt, Krishnamurthi. How to Design Programs,
First Edition, MIT Press, 2001.
The course will be following the first edition of the book. The second edition (draft) of the book is in progress. The two editions focus on the same design principles; an excellent alternative resource.
- Bice, DeMaio, Florence,, Lin, Lindeman, Nussbaum, Peterson Plessner, Horn, Felleisen, Barski.
Realm of Racket. No Starch Press. 2013.
The design ideas are equally applicable to JS, Perl, Python, Ruby (on rails or crutches), and Racket. Realm is a non-text book that bridges the gap between the programming languages used in this course and Racket programming. The course projects will borrow material from Realm but there is no need for you to buy this book, in any form or shape.
- Friedman, Felleisen. The
Little Schemer: Fourth
Edition MIT Press, 1996.
An alternative introduction to recursive programming
- Friedman, Felleisen.
The Seasoned Schemer. MIT Press, 1996.
More on functional and imperative programming
- Felleisen, Friedman.
A Little Java, A Few Patterns. MIT Press, 1998.
Why all this matters and how it scales to Java
- Strunk and White.
The Elements of Style. Bartelby.Com, 1918.
There is no better book on style in writing (anything).