This program has evolved and grown into the Program by Design (PBD) project. This site is now out-of-date and remains only for historical purposes. Please instead go to the PBD site for up-to-date information.

Our curriculum has two parts, the first using Scheme 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). HtDP 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.

We are working on a follow-up text, How to Design Class Hierarchies (HtDCH), that covers the transition from Scheme to Java. This book is currently in draft and available to people who are already part of our project.

For those interested in using HtDP, we have several additional exercises that accompany HtDP (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.


Talks and Papers Papers and talk slides explaining the Project
Scheme Testimonials What others have said about our Project and on using Scheme
Java Testimonials What others have said about the Java part of our Project
FAQs Questions and answers, and a contact email address