How to Design Programs (Felleisen, Findler, Flatt, Krishnamurthi) This book by Felleisen, Findler, Flatt, and Krishnamurthi is freely available online. Like SICP, it uses a derivative of Scheme---several, in fact, and you'll need DrRacket for this book.