Final Information
- Time: 5pm - 8pm Friday 8/12 (exam will start promptly at 5:10pm)
- Location: 155 Dwinelle
Exam Materials
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 a photo ID.
You are allowed to bring 2 sheets, both front and back, of notes that you create yourself. This sheet may be handwritten or typed; the only restriction is that you may not share this sheet with anyone else.
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. However, you are welcome to transfer any information from the study guide that you think may be useful to your sheet of notes.
Topics Covered
The exam will cover all topics from lecture up to and including Wednesday, August 10th, with an emphasis on the material bolded below.
Introduction
- Functions and Expressions
- Control Structures
- Lambdas
- Environment Diagrams
- List and Sequences
Functions
- Higher-Order Functions
- Recursion
- Tree Recursion
- Orders of Growth
Data
- Data Abstraction
- Linked Lists ADT
- Trees ADT
Mutability
- Mutable Sequences (Lists and Dictionaries)
- Mutable Functions (nonlocal)
Objects
- Object-Oriented Programming
- Inheritance
- Linked Lists OOP
- Trees OOP
- Interfaces and Iterators
- Exceptions
Interpretation
- Scheme
- Streams
- Tail Recursion
- Interpreters
Paradigms
- Logic
- Generators
- Coroutines
- Parallelism
Applications
- Theory
- Security
- Artificial Intelligence
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.2 except for the Python implementation of streams in 4.2.6
- Section 4.4
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.
Preparation
The best way to study for the final is to work through practice problems. The course staff has put together the following resources:
Past exams and solutions: The past exams that the staff think are most relevant are:
- Summer 2015 Midterm 2 and Final
- Fall 2015 Midterm 2 and Final
- Spring 2016 Midterm 2 and Final
- Labs, discussions, and quizzes (and solutions) from the course website
- Python Tutor for drawing environment diagrams
TA-created practice problems:
Review Session: There was a TA-led review session on Friday 8/5. The review slides, with solutions, are available from the home page.
Office Hours: Brian's Friday 3-4pm office hours have been rescheduled to 9-11am on Friday. Marvin's Thursday 10-11am office hours have been extended to Thursday 9-11am. See the office hours schedule for this week.
Sections: The final labs will be on Monday 8/8 and Tuesday 8/9 and will consist of final review. The final discussions will be on Tuesday 8/9 and Wednesday 8/10, where each TA will cover a topic of their choice that is not relevant to the exam.
Make-Up Exam
If you are scheduled to take the midterm 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.