Structure and Interpretation of Computer Programs - Abelson, Harold (MIT electrical engineering and computer science series, 1993)