Final Exam Information
Time: | 11:30am-2:30pm Friday December 20 |
Location: | RSF Field House (main gym) |
The RSF is at 2301 Bancroft Way between Dana Street and Ellsworth Street.
Please bring a photo ID to the exam! The course staff will verify your
identity.
The exam is closed note, except for:
Copies of study guides and scratch paper will be provided with your exam.
Topics Covered
The exam will cover all course topics through Section 4.4 of the Composing
Programs online textbook, not including Chapters 2.4.8 (constraint
programming) or 2.6 (implementing classes and objects). Those topics include:
- Primitive expressions
- Call expressions
- Import statements
- Expression trees
- Assignment statements
- Pure and non-pure functions
- Def statements and user-defined functions
- Applying user-defined functions
- Environments
- Environment diagrams
- Arithmetic operators
- Local assignment
- Conditional statements
- Boolean contexts
- Boolean operators
- Iteration with while statements
- Passing functions as arguments
- Nested def statements
- Functions as returned values
- Lambda expressions
- Currying
- Iterative improvement
- Newton's method
- Recursive functions
- Mutual recursion
- Tree recursion
- Data abstraction
- Tuples
- Functional pairs
- The sequence abstraction
- Recursive lists
- For statements
- Ranges
- Strings
- Map, filter, and reduce
- Generator expressions
- Lists
- List comprehensions
- Dictionaries
- Dictionary comprehensions
- Mutable data
- Nonlocal statements
- Identity vs. equality
- Class statements
- Invoking methods
- Dot expression evaluation
- Attribute assignment
- Bound methods vs functions
- Class vs instance attributes
- Inheritance
- Using multiple inheritance
- Recursive list processing
- Tree-structured data
- Trees with internal values
- Orders of growth
- Memoization
- Sets and set representations
- str and repr strings
- Interfaces
- Property methods
- Special methods
- Type dispatching
- Data-directed programming
- Type Coercion
- Memoization
- Order of growth
- Exceptions
- The Scheme language
- Scheme lists and dotted lists
- Parsing (syntactic analysis)
- Eval/Apply mutual recursion
- Dynamic vs lexical scope
- Tail calls
- Iterators
- Generators and generator functions
- Streams
- The Logic language
- Unification
Scheme: The exam may contain Scheme
examples and may ask you to write Scheme expressions. However, the Scheme
language special forms will be limited to lambda, mu, if, and
define. Built-in procedures will be limited to cons, car, cdr,
list and numeric predicates and procedures.
Logic: The exam may contain Logic
examples and questions about unification.
Particular emphasis will be given to:
- Higher-order functions
- Sequences (tuples, lists, recursive lists, Scheme lists)
- Non-local assignment
- Object-oriented programming
- Recursion and recursive data
- Iterators, generators, and streams
Practice Exams
The previous exam most similar in topics covered to your upcoming midterm
is the Fall 2011 61A Midterm 1 exam. Links to all publicly available previous
exams are listed below, for your convenience.
- Fall 2011
- Summer 2012
- Fall 2012
- Spring 2013
- Summer 2013
- Fall 2013
Review Sessions
Review office hours held during the week of 12/9 through 12/12 have a
special schedule and topic-specific themes listed below. Expect a short
concept review and some example questions.