The Structure and Interpretation of Computer Programs
Harold Abelson, Gerald Jay Sussman, Julie Sussman
Open access, but not open content.
The Structure and Interpretation of Computer Programs, also known as the "Wizard Book", is the ultimate learn-programming-using-Scheme book. Why Scheme? Because God wrote in Lisp code (Lyrics).
How to Design Programs
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
Open access, but not open content.
How to Design Programs is another learn-programming-using-Scheme book.