Optional Course Book (1 of 3)
Introduction to Computing
Explorations in Language, Logic, and Machines
Spring 2010 Edition
David Evans
University of Virginia
Note that the book describes the language Scheme instead of the language Python. We will be using Python and Java in class (so you'll be learning multiple languages in any case). The book will teach you important programming concepts (such as recursion and lists) — you should view the Scheme descriptions in the book as a "sanity check" or another way to understand the same material. As you learn how to program, you'll see that all programming languages are actually quite similar.
Optional Course Book (2 of 4)
Udacity
Introduction to Computer Science
David Evans
University of Virginia
Optional Course Book (3 of 4)
Gödel, Escher, Bach
an Eternal Golden Braid
Douglas R. Hofstadter
Indiana University
Optional Course Book (4 of 4)
Structure and Interpretation of Computer Programs
Harold Abelson
Gerald Jay Sussman
with Julie Sussman