Notes and code for The Structure and Interpretation of Computer Programs