Title: How to Design Programs, Second Edition
Author: Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi
License: CC 2.0
This book focuses on habits of good programming, addressing both professional and vocational programmers. With “good programming,” we mean an approach to the creation of software that relies on systematic thought, planning, and understanding from the very beginning, at every stage and for every step. Good programming also satisfies an aesthetic sense of accomplishment.