Midterm 2 Exam

The exam will be from 8-10:10 PM Thursday, October 19.

Please arrive by 8:00 PM. We will start promptly at 8:10 PM.

The midterm exam will be held at many locations across campus. We will email your room and seating assignment for the exam to your CalCentral email address Wednesday night before the exam. If you arrive late or go to the wrong room, you will not be given additional time.

If you do not receive your seating assignment by Thursday morning, please make a private post on Piazza to let us know.


You do not need to bring anything except for a writing utensil and UC Berkeley student ID. The exam is closed book, closed notes, closed computer, and closed calculator. You may not use any electronic devices.

You are, however, allowed to bring two sheets of notes (front and back) that you create yourself. These sheets must be handwritten and you may not share them with anyone else. The purpose of these restrictions is to provide an additional opportunity for you to practice since many students have remarked that the process of compiling a note sheet helped them greatly when studying for the exam.

Both the Midterm 1 Study Guide and the Midterm 2 Study Guide will also be provided along with the exam. Familiarize yourself with the study guide so you know where to find information and how to apply each rule during the exam.

Scratch paper will be provided but we will not grade your scratch work. You will write your answers on the exam itself.

Topics Covered

You are responsible for the sum total of human knowledge from the beginning of recorded history, with particular emphasis on the content of this course. Historically, we don't really have time for much other than course content.

We are reasonable, of course: you can expect that the exam will cover all course topics through Chapter 2.9 of Composing Programs, except for Newton's method (1.6.5), decorators (1.6.9), implementing lists & dictionaries (2.4.7), dispatch dictionaries (2.4.8), propagating constraints (2.4.9), and implementing classes and objects (2.6). This includes all content up to Friday's lecture on Tree Sets.

Particular emphasis will be given to mutable data, object-oriented programming, recursion, and recursive data (such as linked lists and trees).

You should be prepared to answer questions that relate closely to the projects and homework assignments (not including challenge problems). You should also know how to draw an environment diagram by hand.


The best way to study for the midterm is to work through practice problems. The course staff has put together the following resources.

Study Guides

Past Exams

Topics covered and exam format are not necessarily indicative of the exam.

Lab and Discussion

Lab 8 will be held as usual and covers midterm 2 concepts. There will be no lab check-off next week so you do not need to attend in person, but we highly recommend completing the lab before the midterm as it contains exam review material.

There will be no discussion next week. Some TAs may host optional review sessions during their regular section times. They will send an email to you if they plan on organizing a review activity during their regular discussion section time.

Midterm 2 Review Guerrilla Section

7-9 PM Friday, October 13 in 145 Dwinelle, 120 Latimer, and 2060 VLSB

The course staff are hosting an intense, rapid-learning environment called a guerrilla section. Unlike lecture-format review sessions, in a guerrilla section, you'll solve problems first as much as you can on your own, and then share your approach and ideas with other students.

HKN Midterm 2 Review Session

3-6 PM Sunday, October 15 in 306 Soda

The format will be slides reviewing the concepts, followed by example questions.

CSM Midterm 2 Review Session

8-10 PM Sunday, October 15 in 430 Soda and 306 Soda

The format will be slides reviewing the concepts, followed by example questions.