DJ Strouse

the rantings of a baby scientist

DJ Strouse header image 2

SICP: Intro

July 13th, 2008 by djstrouse

Recently I embarked on a quest to read Structure and Interpretation of Computer Programs (SICP) at the recommendation of a friend to whom I had expressed an interest in learning programming. I had planned on powering through the text in about a month but soon realized that would supplant sleeping in my life. The text is far too comprehensive and challenging to digest so quickly. In addition, to really get a good grasp of the material, actual programming practice is required as well.

For these reasons, I wrote up an educational road map, which consists of goals, resources, and a quasi-syllabus. I’m posting them and blogging about my journey for three reasons:

  1. For me to track my progress
  2. For me to record my insights
  3. For others to refer to when starting their own SICP journey

Inspiration
I have so many ideas on the back burner for computer applications & simulations I’d like to see but no skills with which to implement them. I could beg or pay someone else to do them… but where’s the fun in that?

Background
I have taken an intro C++ course and an intro digital logic course at the University of Southern California Viterbi School of Engineering, as well as introductory calculus and differential equations.

Goals

  1. Read the SICP text
  2. Review the MIT lecture slides
  3. Do the SICP text exercises
  4. Do the MIT tutor exercises
  5. Do the MIT tutor problem sets
  6. Do the SICP assignments (UPDATE: these are meant for a different implementation of Scheme and cannot be used with DrScheme, so I won’t be using them)
  7. Do the MIT projects

Note: 3-7 may have quite a bit of overlap and there’s a good chance I’ll only stick with my 1 or 2 favorites as I get a feel for each one.

Resources

Before You Begin
DrScheme (the desktop application that allows you to write and run Scheme code)
MIT ‘Don’t Panic’ Guide to DrScheme (read if you’ve never programmed before, scan if you have)

Regular Use
SICP Text*
MIT Lecture Slides*
Help with SICP Text Exercises
MIT Lecture Exercises**
MIT Problem Sets**
SICP Assignments
MIT Projects*

*All of these resources are included in the MIT OpenCourseWare package for 6.001 – Structure and Interpretation of Computer Programs. Click here to download a zipped copy to your desktop.

**To use these resources, you must register with MIT’s iCampus Tutor.

Note: As an alternative to the MIT lecture slides available on OpenCourseWare, you might also watch the video lectures given by the SICP authors. I’ve heard they are quite good and, depending on whether you prefer books or videos, either option should work. I’ve personally chosen the MIT lectures because I’m currently in Shanghai, China and don’t have the bandwidth to download the videos :)

Quasi-Syllabus
There’s no posted guide for using them in tandem, so I’ve posted a Google Doc matching up the text sections, lectures, exercises, problem sets, projects, and assignments. The quasi-syllabus should be read left to right, top to bottom like a book. I’ll be highlighting completed items in yellow so you can track my progress too.

Timeline
Given that it took an experienced programmer about 10 months to read SICP in its entirety, I’m setting an ambitious goal of finishing this self-education project in one year (July 13, 2009).

Onward!
Well, my inspiration, goals, resources, and road map are now at your disposable.

As I progress, I won’t be posting every little thing I learn, as thought would be boring for you and repetitive for me. Instead, I’ll turn a critical eye to this learning process and offer personal insights & strategies, from outside the text and lectures, that I develop.

Tags:   · · · · · 4 Comments

Leave A Comment

4 responses so far ↓

  • 1 Shane Lofgren Jul 13, 2008 at 9:19 pm

    Three things:

    1. Can I add this blog to the skills doc?

    2. You need to change the permission on the Google Doc of your progress so that anyone (or at least I) can view it.

    3. I’m glad to know that it’s not just that I’m stupid, and that this stuff really is kinda hard. I’ve made it through 6 lectures on MIT and have been able to keep up well enough so far, but I’ve started having to rewatch parts of lectures because I don’t get what they’re saying the first time through. I’m really glad that you’re working on this, though. I foresee a future of programming collaboration.

  • 2 djstrouse Jul 13, 2008 at 11:09 pm

    1. Of course.

    2. Updated. Thanks, I’ve never publicly shared a Google Doc and didn’t know I needed to change that.

    3. MIT no longer uses SICP as their intro computer science text. It was too hard. Now its an upper-division course.

    Make sure that you are practicing coding as well. Do coding assignments of some sort or you’re never retain this info.

  • 3 Shane Lofgren Jul 15, 2008 at 9:24 pm

    Do you use the online tutor with the spoken lectures?

  • 4 djstrouse Jul 17, 2008 at 9:16 am

    I use the online tutor for practicing coding but spoken lectures are way too slow for me ;)

    I read the lecture slides available on OCW.