I started working through Structure and Interpretation of Computer Programs about a month ago, and I’ve made fairly steady progress so far. After a month, I’ve done most of the exercises up to 2.23, which all told is about 43 problems. Some of them have been more challenging then others, and with the exception of one section in chapter 2 which was listed as extra, I’ve basically done all of them.
Chapter 2 has many more exercises than chapter 1 did, with somewhere in the neighborhood of 90 problems to work on.
Given my progress so far, I think that it may take anywhere from one to two months on average to complete a chapter. So most likely SICP is going to take near a year to complete, however the further I get along in the book the more convinced I am that this is a worthy process to continue with.
During the month I’ve been working on SICP I’ve also read three other non-technical books, completed 2 units of the Nand2Tetris course on Coursera, and started to play with WPF ever so slightly. This of course while taking care of normal daily things such as watching too much Netflix, going to work, and sleeping. I’m still fighting with waking up earlier, but I’m set on having a few hours in the morning to do extra work. That is proving to be a difficult nut to crack though, so at least I’ve still been working through SICP at night.
It’s also been fun to learn Scheme, and I’ve learned a little bit more about Dr. Racket and figured out how to debug programs in it. Searching for missing parenthesis isn’t too terrible in Dr. Racket since the GUI shows you which parenthesis match up by highlighting the relevant sections of the code. My skills with recursion are definitely getting better, given Scheme has no iterative looping constructs such as for and while.
Scheme is an interesting language to work with, and the practice of writing programs without using mutable variables and depending upon recursive procedures has been useful. I’m really looking forward to getting up to chapter 4 and 5 in SICP and working on the interpreter and compiler presented.
All told I’m pleased with my continued progress through SICP and look forward to a year or so from now when hopefully I’ll be done working through it. I’m going to try to blog more about a few of the problems here and there as well. I have an idea for a post which may be worthwhile discussing how lists are represented in Scheme.