How to Design Programs. An Introduction to Computing and Programming by Matthias Felleisen
This introduction to programming places computer science in the core of a liberal arts education.Unlike other introductory books, it focuses on the program design process. This approach fostersa variety of skills--critical reading, analytical thinking, creative synthesis, and attention to detail--that are important for everyone, not just future computer programmers.The book exposes readers to two fundamentally new ideas. First, it presents program designguidelines that show the reader how to analyze a problem statement; how to formulate concisegoals; how to make up examples; how to develop an outline of the solution, based on the analysis;how to finish the program; and how to test. Each step produces a well-defined intermediate product. Second, the book comes with a novel programming environment, the first one explicitlydesigned for beginners. The environment grows with the readers as they master the material inthe book until it supports a full-fledged language for the whole spectrum of programming tasks.All the book's support materials are available for free on the Web. The Web site includes theenvironment, teacher guides, exercises for all levels, solutions, and additional projects.