Design is the most crucial and most difficult aspect of software development, and teaching design is the most difficult aspect of software development pedagogy. Based as it is on an introductory course in Scheme (which allows students to reach the fundamental concepts early, with far fewer inessential details than are imposed by most other languages used in introductory instruction), HtDCH introduces students to an industrial-strength language in a staged, principled, graduated way, drawing on the understanding students already have of the key concepts.