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 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.
- Install Racket https://racket-lang.org/
- Open
DrRacket - Go to
file -> Package manager - In
Package Sourceinput, installsimply-scheme - 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 | | | | | |
Latest from the Blog
Currently Reading
