Our curriculum has two parts, the first using Racket and the follow-up using Java. The materials are (or will be) available free on-line, so you can check them out (and later use them) at no cost.


Our primary textbook is How to Design Programs (HtDP). This book has been translated into several languages including Chinese and Polish, with other translations (Japanese, Korean, etc.) on the way.

Some readers have found the initial portion of the book a little dry—a problem that is thoroughly corrected in the second edition, which introduces programming through animations and reactive systems from the outset. You can see this at work in drafts of the second edition.

Readers who find HtDP too advanced are encouraged to look at our sister project, Bootstrap. Bootstrap is being used both in- and after-school at the middle-school level with students as young as age 10.

We have also made available our follow-up text, How to Design Classes (HtDC), which covers the transition from Racket to Java.

For those interested in using HtDP, we have several additional exercises that accompany it (but aren't in the current edition). Similarly, those interested in the animation-based approach of the second edition will find additional exercises in How to Design Worlds.

Other authors are also building on our approach. Readers comfortable with German will be interested in Die Macht der Abstraktion, a university-level textbook with an associated project for introductory teaching. The English-language textbook Picturing Programs: An Introduction to Computer Programming takes a graphics-first approach: students learn about image manipulation, function composition, variable and function definition, the Design Recipe, and event-driven GUI programming before they ever see an arithmetic operator (the author has a lot of mathophobic students).

For more advanced students of programming languages, we have Programming Languages: Application and Interpretation, which is suitable for undergraduates and beginning graduate students, and Semantics Engineering with PLT Redex for advanced undergraduates and graduate students.


All these books use the same programming environment, DrRacket, which is cross-platform and runs natively on each platform. One simple download gets you a rich environment for using each of these books.