How to Design Programs: An Introduction to Programming and Computing second edition
Paperback by Felleisen, Matthias (Trustee Professor, Northeastern University); Findler, Robert Bruce (Associate Professor of Computer Science, Northwestern University); Flatt, Matthew (Professor, University Of Utah); Krishnamurthi, Shriram (Professor of Computer Science, Brown University)