Programming

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.