Final Review

- The final is on 5 May 2000, 8-11 AM, in Louderman 458. The final is comprehensive, drawing from material presented in-class during the entire semester.
- The final is open-notes: bring anything you like to the exam.
- The exam is a standard, 2-hour final. However, three hours are scheduled so that time will not be an issue in taking this exam.
- It would be a good idea to review the Quiz material.
- If you have a conflict with the scheduled time for the final exam, you must make arrangements with the instructor at least 72 hours in advance.

- Definitions
- Object definition (class)
- Object instance
- Parameter
- Instance variable
- Local variable
- Constructor
- Accessor
- Immutable
- Recursion
- Iteration
- Loop invariant
- Loop termination condition
- Static method
- Reduction
- Abstraction
- Linked list
- Heap (where instances are allocated)
- Stack (where local variables are allocated)
- Stack ADT
- Queue ADT
- Subclass, superclass
- Abstract class

- Expressions
- Write an expression for an arithmetic formula
- Tree representation of an expression
- Substitution to evaluate an expression

- Methods
- APIs
- Be able to explain what a method does
- Be able to write a method to compute something
- Be able to use the substitution model to show what a method computes
- Be able to use the data flow model to show what a method computes
- Be able to find and to fix errors in a method
- Be able to write a method from its specification
- Be able to write the specification for a given method

- Objects
- Instantiation
- The role and obligations of a constructor
- Method calls on an instance
- Use of instance variables
- Objects as containers
- Inheritance
- Abstract methods and classes
- Interfaces
- Polymorphism

- Recursion
- See "Recursion" (just kidding)
- Base cases
- Substitution model to trace evaluation
- Data flow model to show evaluation
- Determining valid input parameters for a method
- Write a recursive method to do something

- Iteration
- Pattern of an interative
`while`

loop- Initialization
- Bump
- Guts
- Termination

- Trace what an interative loop does
- Write an interative loop to compute something
- Identify a useful loop invariant
- Identify a loop's termination condition
- Complete a loop based on a given loop invariant

- Pattern of an interative
- Data Structures
- Know the following ADTs covered in class:
- Sets
- Queues
- Stacks
- Lists

- Understand that multiple representations can support the same ADT
- Understand the relative time complexity for an operation across different reprsentations.
- Be able to implement one ADT based on another.

- Know the following ADTs covered in class:
- Algorithms
- Conversion of a number from one base to another
- Binary search -- arrays
- Binary search tree insertion/deletion
- Stable matching
- Quicksort

Last modified 07:30:21 CDT 05 May 2000 by Ron K. Cytron