This course will become read-only in the near future. Tell us at if that is a problem.

Full Description

This is a study group for the classic computing book Structure and Interpretation of Computer Programs by Abelson, Sussman, and Sussman (MIT Press 1996).

The study group will use the Scheme programming language and can be followed in an asynchronous mode through the P2PU site, and also through other synchronous technologies such as online meetings.

All the work will be done through collaboration and group discussion (please do not expect lectures or assignments). Assessment and peer review will be in the form of blog posts and sharing source code through github. Although most of these activities can be done asynchronously, other practices such as pair programming or local meet ups(if at all possible) are highly encouraged and I will try to facilitate these as much as possible.

The Learning Objectives for the course follow the different sections in the SICP book:
1. Building Abstractions with Procedures
2. Building Abstractions with Data
3. Modularity, Objects, and State
4. Metalinguistic Abstraction
5. Computing with Register Machines

Scheme is primarily a functional language, derived from Lisp. If you have only used object oriented languages to date, you will be exposed to a completely different paradigm. If you are wondering why would you care about a language that is about 40 years old, you will be happy to know that all you learn here can be directly applied to newer and exciting languages such as Clojure, Haskell, Erlang or the widely used JavaScript.

If you are also wondering why the course is not using one of those newer and exciting languages, the answer is simple: The course does not focus on the language but on the concepts.


Programming exprience in any language equivalent to a computer science degree (about 4 years work/college experience).

The book can be particularly hard to follow so a lot of motivation is needed to join the course. As motivation cannot be measured, I will leave it up to the participants to make the commitment for themselves and the other group members.

Task Discussion