Exam1 will be on Tuesday, March 3rd. Topics will include:
- Big-O complexity. KNOW THE DEFINITIONS for O, Omega, Theta.
- Big-O for simple algorithms. Know what to do with small segments of code, where there are some loops, maybe some recursion.
- Be able to sketch the call tree for a recursive function. This might be a useful thing to know how to do for complexity analysis questions.
- Be able to run insertion sort by hand.
- Be able to sketch pseudocode for mergesort, and the merge function.
- It should be easy to remember how to compute the left and right children of a heap element i.
- Be able to insert elements into a heap.
- Know the pseudocode for the fast build-heap, max-heapify, heapsort.
- The fast build-heap routine is O(n). Know how amortized analysis lets you get this Big-O value.
- Amortized analysis -- there's a simple example with push, pop, and multipop that would be good to understand.
- Know why one might want randomization in quicksort
- Sketch pseudocode for the main quicksort routine.
- Dynamic programming -- lots of stuff to ask....
- Know pseudocode for the recursive Fibonacci (and also the iterative version)
- There will be a question that looks hard, but is very easy if you know how to do dynamic programming.
- Be able to determine the longest common substring of APPLE and PLATE (and show your work)
- Be able to run the assembly line scheduling algorithm.
- Be able to determine an optimal binary search tree.
- Be able to determine an optimal way to put parentheses in a series of matrices.
- Be able to sketch pseudocode for the above.
Exam1 from CS333, Spring 2006, as is Exam1 from CS333, Fall 2008. We're covering some things in different order this semester, but this should give you a rough idea of what to expect.