An Introduction to Computer Programming
A first programming course should not be directed towards learning a particular programming language, but rather at learning to program well; the programming language should get out of the way and serve this goal. The simple, powerful Racket language (related to Scheme) allows us to concentrate on the fundamental concepts and techniques of computer programming, without being distracted by complex syntax.
As a result, this book can be used at the high school (and perhaps middle school) level, while providing enough advanced concepts not usually found in a first course to challenge a college student.
Those who have already done some programming (e.g. in Java, Python, or C++) will enhance their understanding of the fundamentals, un-learn some bad habits, and change the way they think about programming.
We take a graphics-early approach: you'll start manipulating and combining graphic images from Chapter 1 and writing event-driven GUI programs from Chapter 6, even before seeing arithmetic. We continue using graphics, GUI and game programming throughout to motivate fundamental concepts. At the same time, we emphasize data types, testing, and a concrete, step-by-step process of problem-solving.
After working through this book, you'll be prepared to learn other programming languages and program well in them. Or, if this is the last programming course you ever take, you'll understand many of the issues that affect the programs you use every day.
23 August 2010
"I have been using Picturing Programs with my daughter, and there's no doubt that it's gentler than Htdp. It does exactly what Stephen claims, which is to move gradually from copy-and-change exercises to think-on-your-own exercises within each section. I also think it's nice that the "worked exercises" are clearly labeled as such. There's something psychologically appealing about the fact that you first see an example in the text of the book, and then a similar example is presented as if it were an exercise but they just happen to be giving away the answer. It is practically shouting out "Here's a model of how you go about solving this class of problems, pay close attention!"." Mark Engelberg
"1. Matthias & team have done exceptional, highly impressive work with HtDP. The concepts are close to genius. (perhaps yes, genius quality work) They are a MUST for any high school offering serious introductory CS curriculum.
2. Without Dr. Blochs book "Picturing Programs", I would not have successfully implemented these concepts (Dr. Scheme, Racket, Design Recipe etc) into an ordinary High School Classroom.
Any high school instructor who struggles to find ways to bring these great HtDP ideas to the typical high schooler, should immediately investigate the Bloch book.
Think of it as coating the castor oil with chocolate."