(minus SICP SICP)

Upcoming Course Dates:

  • 8 weeks starting November 7, 2026

Course Hours:

  • Saturdays
  • 9:30am - 11:30am US Central Time/Chicago
  • Coding/Discussion is asynchronous

Cost:

  • $400

Registration (no payment required now):

Instructor: David Beazley

Other Courses | FAQ


Overview

One of the classic textbooks of computer science is "Structure and Interpretation of Computer Programs (SICP)" by Abelson and Sussman. This is the book that was long taught to undergraduates at MIT and it's notable for teaching some fundamental ideas about programming and programming languages. However, the book is also infamous for its extended examples and side quests--many of which are skipped by professors in the interest of time. THAT is the foundation of this course!

In short, we're not going concern ourselves with the problem of creating a programming language. Instead, we're going to focus our attention on the following book examples:

At first glance, this might seem like a straightforward affair. However, like most things in SICP, there is often much more than meets the eye. Most of these examples involve some subtle aspect of algorithms, complexity, or abstraction. Some thinking will be required. You might even create part of an async framework or a compiler by accident.

Programming Language

SICP presents all of its code in Scheme. However, you're not going to get the luxury of using that! Instead, participants will be randomly assigned to use one of three possible implementation languages that they are unlikely to know in advance. The choice of language will not be revealed until the course starts. However, I can say that the language chosen will have the following features:

Participants are expected to learn this programming language well enough to solve the problems and hold discussions with other classmates assigned to use the same language. Participants are expected to listen to discussion involving the programming languages that they were not assigned to use. It is expected that you will use the same programming language for the entire course unless you can convince someone else to trade with you.

A Course on Programming

So you call yourself a programmer? That must mean

This course is about finding joy and building skill in all of these things.

Instruction Format

This course is going to be taught over 8 weeks in a mixed synchronous/asynchronous format to a class of NO MORE THAN 12 students.

Each Saturday will feature a 120 minute Zoom session consisting of two parts. In the first part, people using the same programming language will be grouped together to informally discuss their solution code with each other while everyone else watches and thinks of questions for a short concluding Q&A (each programming language group will take turns doing this). In the second part, new material and details about the project for the coming week will be described.

During the week students will work individually, but a discussion forum will be used for conversation. The amount of code required week-to-week should not be enormous. Nevertheless, SICP has a reputation for being "tricky" so some solutions might not be obvious. You should plan on spending up to 10 hours per week outside of class working on problems.

Target Audience

This class is for programmers who actually like coding, like telling others about it, and want a bit of a brain challenge to keep their thinking skills up.

Prerequisites

You should already have some programming experience. SICP presents code using Scheme, but you don't need to be an expert at Scheme--I will introduce the basics needed to help understand the examples as needed. Also, as noted above, we will be coding solutions in a language other than Scheme.

Many of the examples in SICP involve problems that arise in high school math. You should be generally familiar with topics involving the number line, polynomials, vectors, and other things that sometimes arise in an algebra or precalculus course.

Questions and Answers

Q: Why are you teaching this?

In short, I like programming. Although I have taught a SICP course many times, I've never actually worked through all of the extended examples. Thus, I thought it would be fun to do a course just dedicated to the often-skipped parts of SICP.

Q: Why would I take this?

If you like programming and coding with your brain, this course will present some nice challenges and allow you to hang out with other people who also like programming and coding.

Q: Will I learn anything useful that might help me get a job?

I have no idea. Probably not.

Q: Do I need to be a "good" programmer to take this?

No, but you should be a curious programmer.

Q: But, I'm worried that my code is going to suck.

Who's going to care?

Q: What if I have to skip one of the classes?

The online Saturday discussion session is a central feature of the course so if you can't commit to that, you shouldn't sign up. If you have to miss one of the sessions for some reason, it's fine, but this should be an isolated event and not a recurring absence.

Q: Does this course involve AI or LLMs?

No. This course was created by humans for humans. What you do on your own time is your business. However, AI is not part of the official course and not something that I will be using during instruction.

Q: What's with the name?

The name (minus SICP SICP), and frankly the course concept itself, is inspired by the comic Garfield minus Garfield. Specifically, I got to thinking... what would you get if you took SICP and removed all of the Structure and Interpretation of Computer Programs from it?

About the Instructor

This class is led by David Beazley. Although most known for his work in the Python community, Dave was formerly a tenure-track assistant professor in the Department of Computer Science at the University of Chicago where he once taught a SICP course along with a variety of other topics in systems and programming languages. You might also know Dave from this somewhat infamous bit of live coding. More recently, he gave a tutorial on lambda calculus at PyCon 2019. In 2023-2024, he co-taught Programming Languages at Brown University with Shriram Krishnamurthi.


Copyright (C) 2005-2026, David Beazley