SICP Study Group - Section 1.1 - Philly

Public group
Location image of event venue


Quite a few of you expressed interest in having a study group around the excellent book Structure and Interpretation of Computer Programs, and so here it is!

But, SICP is in Scheme, right? What does that have to do with a Clojure meetup? Well, in about five seconds, I found two great posts explaining the benefits of SICP for the Clojure programmer: Why Clojure ( by Bob Martin, and Advice to a Newbie ( on

For a bit of marketing from me on why you should care about an old musty Scheme book: the book itself is is massive in scope, so it would be hard to list all the things it covers (hence the need for a study group). For example, there is a section in chapter 2 that has you write all the core functional abstractions: map, filter, reduce, etc entirely from just functions and lambdas. I thought I understood those abstractions, but it wasn't until I made them from scratch that they really clicked. Additionally, a later section shows how different data structures can be made to work with those abstractions, which is fundamental to how ISeq in Clojure works.

The book eventually goes on to have to write your own interpreter, and if the table of contents is accurate, your own compiler (I have only finished Chap 2 so far). It shows you how to add OO-like benefits to Scheme: polymorphism, data "type" checking, etc. with just built in language constructs.

SICP is not for the faint of heart, but it will turn you into a much better developer.

If you are up for the challenge, I would like to try to get through the whole book in one year, as suggested by the author of There are 356 exercises, and each one is there to teach you something valuable that you will need to complete the next section.

I would think it a terrible waste to rush through the material, so at first, I would like to start by focusing on one major section per meeting. I cannot imagine any way to actually cover even half the material of the book in the meeting itself, so as the name suggests, this will be meant to supplement your own study of the book by providing some structure, help, motivation, and camaraderie.

For this first meeting, please try to read Section 1.1 ( of the book beforehand. You may also find it helpful to view the lectures online Section 1.1 (

We can discuss the reading, ask questions, and for those interested, we can pair up (or work solo) and work through the exercises from that section with the remaining time. If you are interested in attempting to complete the exercises in Clojure or some other language, this might be a good time for that.

Additionally, we will discuss what the group would like to see for future sessions.

If you have any suggestions or ideas, please feel free to email me or leave a comment.

Please fill out this poll with your preference for a location for this event:

Since two of you asked, here is a poll for what day to have it that week please fill out all that apply.