- Time: 5-8 pm Thursday 8/10 (exam will start promptly at 5:10 pm)
- Location: Room assignments will be sent to your CalCentral email on Wednesday night before the exam.
You must bring your UC Berkeley student ID. We will be performing ID checks during the exam. If you do not have a UC Berkeley student ID card, bring a valid government-issued identification. Students who cannot be identified will be photographed for later verification.
The exam is closed book, closed notes, closed computer, and closed calculator. You do not need to bring anything except for a writing utensil and UC Berkeley student ID.
You are, however, allowed to bring four 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.
In previous semesters, the staff provided a Midterm 1 Study Guide, Midterm 2 Study Guide, and Final Study Guide along with the exam. Most students find that these are not useful, so we will not provide them and instead include relevant information on the exam itself. However, you are welcome to transfer any information from the study guide that you think may be useful to your note sheets.
The exam will cover all topics from lecture up to and including Thursday, August 3, in addition to any material covered in labs, discussions, homeworks, and projects. Particular emphasis will be placed on the material bolded below.
- Functions and Expressions
- Control Structures
- Environment Diagrams
- List and Sequences
- Higher-Order Functions
- Tree Recursion
- Orders of Growth
- Data Abstraction
- Linked Lists ADT
- Trees ADT
- Mutable Sequences (Lists and Dictionaries)
- Mutable Functions (nonlocal)
- Object-Oriented Programming
- Linked Lists OOP
- Trees OOP
- Tail Recursion
- Iterators & Generators
This material is described in the following parts of Composing Programs:
- Chapter 1 except for Newton's Method (1.6.5) and Decorators (1.6.9)
- Chapter 2 except for Implementing Lists & Dictionaries (2.4.7), Dispatch Dictionaries (2.4.8), Propagating Constraints (2.4.9), Implementing Classes & Objects (2.6), Measuring Efficiency (2.8.1), and Memoization (2.8.2)
- Chapter 3
- Sections 4.1-4.3 except for the Scheme implementation of Streams (parts of 4.2.6) and Recursive Select Statements (4.3.5)
This should align with lectures.
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, including box-and-pointer diagrams for both linked lists and Python lists.
Unlike previous semesters, the exam will include a multiple-choice environment diagram similar to the format seen on quizzes except with a more complete partial credit rubric in case a frame was dropped or called out of order.
The best way to study for the final is to work through practice problems. The course staff has put together the following resources:
- Studying Guide
Resources: Keep in mind that topics covered this summer differ from past offerings.
- Labs, discussions, and quizzes (and solutions) from the course website
- Python Tutor for drawing environment diagrams
- Scheme Interpreter for testing Scheme expressions and visualizations
Mock Final: On Monday 8/7 there will be a mock final in the normal lecture time and place (11-12:30 in 2050 VLSB).
Review Session: On Tuesday 8/8 there will be a staff-led review session in the normal lecture time and place (11-12:30 in 2050 VLSB).
Upcoming Lectures: On Wednesday 8/9 Professor John DeNero will be lecturing on Natural Language Processing. There will be no lecture on Thursday 8/10.
Office Hours: Office Hours after 2 pm on Thursday the day of the exam have been cancelled. See the office hours schedule for more information.
Sections: Discussion sections on Thursday 8/10 and Friday 8/11 have been cancelled. All other sections, with the exception of Thursday morning labs, will still be held as normal. The last discussion on Tuesday 8/8 and Wednesday 8/9 is still worth exam recovery points and will help prepare you for the exam. The lab on Monday 8/7 and Tuesday 8/8 will be an optional review lab with solutions available before the usual release date. The very last lab on Wednesday 8/9 will be optional topical review where each TA will host a review session covering a specific topic in the course. You may attend as many sessions as you want.
Mentoring: Group mentoring sections on Wednesday 8/9 and Thursday 8/10 have been cancelled.
If you are scheduled to take the final at a different time and/or location, either because you have already requested an alternate time or you have DSP accommodations, we will send you a separate email with additional details.