Back to Blog
Image Description

Berkley CS61A (Fall 2010): Structure and Interpretation of Computer Programs Course Guide

March 31, 2023

If you’re following along with the Teach Yourself CS guide, they recommend studying the book “Structure and Interpretation of Computer Programs” (SICP) and following along with the Berkley lectures from the CS61A course. The course information is pretty scattered and out of date, so I’ve compiled all the information you’ll need to get going.

Getting Started

Lectures

CS61A - Fall 2010 Lectures

CS61A is taught by Brian Harvey, who I think is a great professor. He has a good sense of humor and takes a laid back approach to the course. His honesty about some of the subjects is pretty fantastic.

The TYCS guide recommends following these lectures from Spring 2011, but there several missing from the list. It’s better to use the Fall 2010 lectures for the same course that are more complete. The video quality isn’t fantastic, but it does the job.

💡 The lectures contain quite a bit of administrative tasks conversations so be prepared to skip ahead regularly.

Documents

HW: https://people.eecs.berkeley.edu/~bh/61a-pages/Volume1/hw.pdf

Labs: https://people.eecs.berkeley.edu/~bh/61a-pages/Volume1/labs.pdf

HW/Lab Solutions: https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/

Notes: https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/notes.pdf

Course Reader 1: https://people.eecs.berkeley.edu/~bh/61a-pages/Volume1/CS 61A Course Reader, Volume 1.html

Course Reader 2: https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/CS 61A Course Reader, Volume 2.html

Setting up the Environment

The course uses the a flavor of the LISP programming language called Scheme and I HIGHLY recommend using it. The simply scheme package you need to load adds a few helper functions used in the course. The Scheme syntax is super minimal so you can focus on the CS concepts and not get sidetracked by learning a language first. The concepts you lean in this class apply to all programming languages, so this is super beneficial in the long run.

You can use a command line to write code (setup is not super straight forward), but I recommend using Racket as it makes writing larger programs much easier.

  1. Install Racket https://racket-lang.org/
  2. Open DrRacket
  3. Go to file -> Package manager
  4. In Package Source input, install simply-scheme
  5. At the top of the file add #lang simply-scheme

Schedule

| Week | Reading | Lecture(s) | Homework | Labs | Exams | Project | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | -------- | ---- | ----- | ------- | | 1 | 1.1 | | | | | | | 2 | 1.3 | | | | | | | 3 | 1.2.1–4 | | | | | | | 4 | 2.1, 2.2.1 | | | | | | | 5 | 2.2.2–3, 2.3.1,3 | | | | | | | 6 | 2.4–2.5.2 | | | | | | | 7 | Above the Line, Ref-Man, Below the Line | | | | | | | 8 | 3.1, 3.2 | | | | | | | 9 | 3.3.1–3 | | | | | | | 10 | 3.4 | | | | | | | 11 | 3.5.1–3, 3.5.5, | | | | | | | 12 | 4.1.1–6 | | | | | | | 13 | 4.1.7, 4.2 | | | | | | | 14 | 4.4.1–3 | | | | | |