Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi

“The foundation of a liberal arts education in computer science is emphasized in this introduction to programming. Unlike other introductory books, it focuses on the program design process, presenting program design guidelines that show the reader how to analyze a problem statement, how to formulate concise goals, how to make up examples, how to develop an outline of the solution, how to finish the program, and how to test it. The work does not employ an off-the-shelf industrial language but delivers a tailored instructional language because learning to create programs is about studying concepts and acquiring transferrable skills. It also provides DrRacket, a programming environment for beginners that encourages interactive, feedback-focused learning for the same reason. As readers gain mastery of the information in the book, the environment develops alongside them until it can support a full-fledged language for the complete range of programming jobs.

This second edition has undergone a thorough revision. The second edition introduces many design recipes for interactive programs with graphical user interfaces and batch processes, although the book still teaches a methodical approach to program design. It also adds various new clues to its design recipes for functionalities. Finally, testing, event-driven programming, images as plain values, and even distributed programming are now supported by the teaching languages and their IDE.”