If you have enough time, try "Structure and Interpretation of Computer
Programs":
http://mitpress.mit.edu/sicp/
(One of these days I plan to actually finish it :-)