Notes & exercises from Structure and Interpretation of Computer Programs, by Abelson and Sussman