Revisiting the book, it has surprised me to find a lot of the ideas familiar, some of them even mundane. Since trying it the last (three years ago? four?), I have delved a bit into functional programming via Scala (I did Martin Odersky’s “Functional Programming Principles in Scala” last semester) and Clojure, and the things I learned in The Little Schemer weren’t all forgotten. The substitution model, for one, feels very natural, and recursion is not that difficult to reason about.
What I’m doing differently this time is following along with the 1986 lectures, which at least one person in every SICP-related Reddit/HN thread has recommended (and I ignored). I usually prefer learning from books and documentation, but the lectures have the benefit of requiring focus and monotasking. Also, listening to the audience’s questions makes me a bit more aware of what is hard for a person with the Math background but not the programming skills — the exact opposite of my situation, and a great aid in keeping things in perspective.
As predicted, said Math-heaviness still makes me a little bit uncomfortable, but I’m soldiering through. That means stopping at an exercise, reading Wikipedia and sometimes just taking things at face-value, as I don’t have the intuitions someone more familiar with the subject matter would. It takes some patience, sometimes, and I would be lying if I told you it doesn’t discourage me a bit.
That said, Chapter 1 is done. Now on to Chapter 2. Wish me luck.