SICP

Structure and Interpretation of Computer Programs teaches advanced programming concepts from scratch. If you take the time to work through the book, you will never think the same. Don't get intimidated by the Fibonacci proof in the first chapter. You can skip it without consequences (except slight damage to your ego). Solutions to check your answers are available on the Scheme community wiki, and mine are on Gitea.

Update 13-Aug-2022: it seems like the HTML version of SICP is no longer available on mitpress.mit.edu. I have updated the link to a modernized HTML5/EPUB3 version on GitHub.