Structure and Interpretation of Computer Programs
mitpress.mit.edu