There are few, if any, ideas of my own in this book.
Gerald Soosairaj gave me the idea to lean hard into an explicitly Socratic writing style, and showed me how effective it could be. I don’t think I would have persisted in writing as much if the format wasn’t such a delight to write (regardless of what the reader thinks).
The arc through recursion and interfaces all takes inspiration and patterns from How to Design Classes and Ben Lerner’s 2510 (and, at a very high level, a bit of Sam Tobin-Hochstadt and David Van Horn). The general idea of the recipe and a build through structurally recursive data is of course from How to Design Programs.
The Pict library is based on 2htdp/image in Racket. The testing flow and some Pict ideas for Java draw from tester.jar/javalib.jar by Ben Lerner at Northeastern University. The specific image constructor choices are somewhat motivated by the design of PyTamaro (though I hope Luca Chiodini will forgive me for providing OverlayAt while crediting PyTamaro). It is re-implemented here to make it run well in the book and suit the needs of this course.