CS 61A: Structure and Interpretation of Computer Programs

Summer 2006

Much of this website is still under construction!

Staff Information

New Instructor
Ana Chang (You can view my old teaching evaluations here.)
     E-mail: anar at cs dot berkeley dot edu
     Lectures: MTuWTh 11-12:30 PM, 534 Davis
     Office hours: M 9:45-10:45 AM, Tu 3:00-4:00 PM, 360 Hearst Mining Memorial Building

Kevin Lin (You can view my old teaching evaluations here.)
     E-mail: kevinlin at gmail dot com
     Lectures: MTuWTh 11-12:30 PM, 534 Davis
     Office hours: M 9:45-10:45 AM, Tu 3:30-4:30 PM, 329 Soda

Gap Thirathon -- SECTION WEBSITE
     E-mail: ntt at eecs dot berkeley dot edu
     Lab: MW 2-3:30 PM, 271 Soda
     Discussion: TuTh 2-3:30 PM, 310 Soda
     Office hours: MW 3:30-4:30 PM, 271 Soda
Ramesh Sridharan -- SECTION WEBSITE
     E-mail: ramesh_s at berkeley dot edu
     Lab: MW 12:30-2 PM, 271 Soda
     Discussion: TuTh 12:30-2 PM, 310 Soda
     Office hours: M 4:30-5:50 PM, Th 10-11 AM, 651 Soda


8/18: Final exam grades will be post on Saturday 8/19 by 6pm.

8/17: Final review problems and solution. Note that these problems do not cover everything.

8/16: The final exam will be on Friday 8/18/2006 from 3-6pm in 60 Evans Hall

8/13: HW8A has been posted. Note that it is optional, but it is quite short.

8/10: Proj4ii, hw7 pickup: Sunday 8/20, 4 - 4:30 outside Soda Hall.

8/10: Regrade Deadlines:

8/9: A review session for midterm 3 will be held in 306 Soda from 4-6 tonight (Wednesday). Problems and solutions.

8/9: The final exam will be on Friday 8/18/2006 from 3-6pm.

8/9: Homework 3 & 4 regrade request deadline: Monday 8/14 by lab. Please submit written regrade requests to your TA.

8/8: Midterm 3 will be Friday Aug 11, 4-6pm, in 10 Evans Hall

8/7: The regrade deadline for project 2 is Wednesday Aug 9th by lab. Please submit written regrade requests to your TA.

7/31: The regrade deadline for Midterm 2 is: Thursday Aug 3rd at 11AM. Please submit written regrade requests to your TA.

7/28: Solutions to the review session handout can be found here.

7/27: Ramesh will be holding extra office hours from 4-6 on Thursday evening in lab (271 Soda). Stop by with questions on the project, midterm, or lecture.

7/25: Midterm 2 will be given from 4 - 6 on Friday July 28 in 10 Evans Hall.
Review session will from 4-5:30 on Wednesday July 26 in 150 Goldman School of Public Policy (across from Soda). We will go over these review problems.

7/19: In case you missed my announcements in lecture: Due to a very serious family emergency I am leaving Berkeley at the end of this week to go home (to southern California). My replacement will be Ana Ramirez Chang, who is a grad student in CS. I'm very sorry for having to disrupt the class like this and I hope that you all will understand, but I will remain involved with the course, and I will be glad to continue to answer questions by e-mail and on the newsgroup. I will also possibly hold "online office hours" on some chat program, such as AOL instant messenger, ICQ, or Google chat. -- Kevin

7/13: Go to Gap's page for review session notes and solutions.

7/11: The midterm location has changed. It will be in 145 McCone. Please take note.

In lecture I said that I was going to post some old midterms online, but it turns out that all of the old midterms that I have saved are all available on the HKN exam archive. So just use that.

7/10: You don't have to do exercise 1.16 on homework 2A, because I already gave the answer away in lecture. Thanks to Jason Gowan for pointing this out to me.

Also, here is the website for submitting anonymous feedback that I mentioned in lecture today. Please use it, especially if you have any suggestions for us (the staff).

Old announcements


There are two labs per week. Lab assignments are worth zero points (but you still should do them!). Homework assignments are assigned (and will be posted online) every Monday and Wednesday, and are due the Wednesday of the following week at 11:59 PM. Homework is graded on effort; if you show that you made a reasonable attempt on every problem, then you will get full credit. Projects follow a more irregular schedule. Projects are graded on correctness and understanding. There will be four projects. The first two projects will be done individually, and the last two projects will be done in groups of two students. It is mandatory to turn in a paper copy of your projects and optional for homework assignments. The drop box for paper copies is in 283 Soda.

Solutions to all assignments will be posted in the solutions directory, which can be accessed on campus computers only.

Lab Assignments
Lab 1A for 6/26 and 6/27
Lab 1B for 6/28
Lab 2A for 7/3
Lab 2B for 7/5
Lab 3A for 7/10
Lab 3B for 7/12
Lab 4A for 7/17
Lab 4B for 7/19
Lab 5A for 7/24
Lab 5B for 7/26
Lab 6A for 7/31
Lab 6B for 8/2
Lab 7A for 8/7
Lab 7B for 8/9
Lab 8A for 8/14

Homework Assignments
HW 1A posted 6/26, due 7/5 at 11:59 PM
HW 1B posted 6/28, due 7/5 at 11:59 PM
HW 2A posted 7/3, due 7/12 at 11:59 PM (you don't have to do exercise 1.16)
HW 2B posted 7/5, due 7/12 at 11:59 PM
HW 3A posted 7/10, due 7/19 at 11:59 PM
HW 3B posted 7/12, due 7/19 at 11:59 PM
HW 4A posted 7/17, due 7/26 at 11:59 PM
HW 4B posted 7/19, due 7/26 at 11:59 PM
HW 5A posted 7/24, due 8/2 at 11:59 PM
HW 5B posted 7/26, due 8/2 at 11:59 PM
HW 6A posted 7/31, due 8/9 at 11:59 PM
HW 6B posted 8/2, due 8/9 at 11:59 PM
HW 7A posted 8/7, due 8/16 at 11:59 PM
HW 7B posted 8/9, due 8/16 at 11:59 PM
HW 8A posted 8/13, optional

Project 1 posted 6/27, due 7/6 at 11:59 PM
Project 2 posted 7/10, due 7/20 at 11:59 PM
Project 3 posted 7/20, part I (proj3i) due 7/27 at 11:59 PM, part II (proj3ii) due 8/3 at 11:59 PM
Project 4 posted 8/3, part I (proj4i) due 8/10 at 11:59 PM, part II (proj4ii) due 8/17 at 11:59 PM


Each midterm is worth 40 points, or about 13% of your course grade. There will be three midterms. The midterms are closed-book, closed-notes, closed-electronic-devices, closed-friends, etc.

Midterm 1 will be on Friday, 7/14/2006, 4-6 PM, in 534 Davis 145 McCone. It will emphasize weeks 1 and 2, but it will have one question on week 3 material. You can bring exactly one standard size (8.5 x 11) page of notes (front and back).

Midterm 1
Midterm 1 solutions

Midterm 2 will be on Friday, 7/28/2006, 4-6PM, in 10 Evans Hall. It will cover: data directed programming, message passing, tagged-data, deep-lists, trees, pairs/lists, object oriented programming (above the line), and Scheme-1

Midterm 2

Midterm 3 will be on Friday, 8/10/2006, 4-6PM, in 10 Evans Hall. It will cover: Environment diagrams, local state, mutation including lists (set-car! set-cdr!) and vectors, concurrency, metacircular evaluator.
You may bring up to 3 standard size (8.5 x 11) pages of notes (front and back).

Midterm 3

Old Midterm 3 Questions

Final Exam will be on Friday 8/18/2006, 3-6PM (not Berkeley time) in 60 Evans Hall

Tentative Course Schedule

Most online course materials will be in PDF format. There are many free PDF viewers available. Adobe Acrobat is a good one to get.

Warning: Schedule is subject to change, especially for the later weeks. Also, since this is my first time as the instructor for this class, my notes will probably be relatively rough and subject to additions and edits.

(Reading assignments for each lecture are in parenthesis. Section numbers refer to the textbook, Structure and Interpretation of Computer Programs, unless otherwise noted.)

I intend to cover all of Chapter 1, most of Chapter 2 (we will probably skip about half of the "Example" sections), most of Chapter 3 (we probably won't spend too much time on streams, and we'll skip some subsections here and there), Section 4.1, and some combination of Sections 4.2, 4.3, and 4.4. In addition, we will be doing a few things that are not in the textbook, including object oriented programming.

Week 1
Mon 6/26 - Functional programming (1.1) - lecture slides, course info, notes - hw1a assigned
Tue 6/27 - Functional programming - lecture slides - proj1 assigned
Wed 6/28 - Higher order procedures (1.3) - lecture slides - hw1b assigned
Thu 6/29 - Higher order procedures - lecture slides

Week 2
Mon 7/3 - Efficiency (1.2.1-1.2.4) - lecture slides - hw2a assigned
Tue 7/4 - HOLIDAY
Wed 7/5 - Efficiency / Programming methodology - lecture slides - hw2b assigned
Thu 7/6 - Programming methodology / Data abstraction - lecture slides


Week 3
Mon 7/10 - Data abstraction / Pairs and lists (2.1, 2.2.1) - lecture slides - hw3a, proj2 assigned
Tue 7/11 - Pairs and lists / Hierarchical data - lecture slides - (2.2.2-2.2.3, 2.3.1, 2.3.3)
Wed 7/12 - Hierarchical data - notes - hw3b assigned
Thu 7/13 - Review for midterm - review problems and solutions at Gap's page


Week 4
Mon 7/17 - Representing abstract data (2.4-2.5.2, scheme1.scm) - lecture slides - hw4a assigned
Tue 7/18 - Representing abstract data - lecture slides
Wed 7/19 - Object oriented programming (In PostScript format: OOP above-the-line handout, OOP reference manual) - notes (a few corrections made on 7/20) - hw4b asssigned
Thu 7/20 - Object oriented programming - notes - slides -proj3 assigned


Week 5
Mon 7/24 - Assignment, state, environments (3.1-3.2) - lecture slides - Environment Model Rules - Harvey's notes on local state variables and environments - hw5a assigned
Tue 7/25 - Assignment, state, environments (see slides for monday)
Wed 7/26 - Mutable data (3.3.1-3.3.3) - slides - Harvey's Notes - hw5b assigned - hw5b refers to the OOP below-the-line handout
Thu 7/27 - Mutable data, Client/server paradigm - See Wednesday slides for end of mutable data - Harvey's Notes on Sockets

**PROJECT 3 PART I (proj3i) DUE THURSDAY 7/27 AT 11:59 PM**


Week 6
Mon 7/31 - Sockets / Concurrency (3.4) - Harvey's Notes on Concurrency - hw6a assigned
Tue 8/1 - Metacircular evaluator, Logo (4.1) - Harvey's notes on the metacircular evaluator and logo
Wed 8/2 - Metacircular evaluator, Logo, Lexical vs. Dynamic Scope - hw6b assigned
Thu 8/3 - Analyzing Evaluator (4.1.7)- Harvey's notes on Analyzing Evaluator - proj4i, proj4ii assigned

**PROJECT 3 PART II (proj3ii) DUE THURSDAY 8/3 AT 11:59 PM**

Week 7
Mon 8/7 - Streams (3.5.13, 3.5.5) - Harvey's notes on Streams - hw7a assigned
Tue 8/8 - Streams & Lazy Evaluator (4.2)
Wed 8/9 - Lazy Evaluator - Harvey's notes on Lazy Evaluator - hw7b assigned
Thu 8/10 - Nondeterministic Evaluator (4.3) - Harvey's notes on Nondeterministic Evaluator



Week 8
Mon 8/14 - Logic Programming (4.4.1-3) - Harvey's notes on Logic Programming - hw8a assigned
Tue 8/15 - Review - Harvey's summary of the class
Wed 8/16 - Review I
Thu 8/17 - Review II



Useful Links and Handouts

General Course Information - First-day handout with basic info on assignments, grades, policies, etc.
Quick Intro to CS 61A Computing Resources - Intro to Unix written by Casey Ho, a former CS 61A TA.
Basic Emacs Guide - Intro to Emacs written by Jeff Chiang, another former CS 61A-ite.
Revised Report on Scheme (R5RS) - Official documentation for Scheme.
SICP webpage - Homepage for the course textbook.
SICP full text - The entire textbook online (for free!). However, I still strongly recommend that you buy the book.
Web access to newsgroup - A web interface for reading newsgroups.
Connecting from home - Instructions on connecting from home.
Berkeley software vault - Go here for free software: ssh, sftp, etc. Note: You will need a CalNet ID to download.
CS 61A exam archive - Hosted by HKN, the EECS honor society.

You are visitor number since 7/2/2006.