How To
Design Programs: An Introduction to Programming and Computing, by Matthias
Felleisen, Robert
Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. MIT
Press (2001). ISBN: 0262062186 [required; The full text is available on-line,
but most students find it advantageous to have a physical copy.]
Hackers & Painters,
Paul Graham. O'Reilly Media, Inc. (2004).
ISBN: 0596006624 [The selected essays that we will read from this book
are
available
electronically.
However, this is a thought-provoking and well-written book and I
encourage you to acquire a copy for your personal library.]