big-Oh: constants, lower order terms don't matter figure out big-Oh from looking at code -- Algorithms we've looked at: binary search linear search insertion sort merge sort ArrayList operations LinkedList operations stack/queue operations heap operations Know, in a handwavy sort of way, how these all work. Know their big-Oh for best-case, average-case, worst-case. Understand how the various decorations to simple data structures give us better time performance at the cost of a little space and some bookkeeping -- Why is merge sort O(n log n) Why does ArrayList add w/ doubling scheme have O(1) amortized performance? (handwavy, doesn't need formal rigor) -- What is the purpose of having iterators? -- Be able to implement simple code using Lists/Iterators/Stacks/Queues -- Understand practical uses of Stacks/Queues/Priority Queues. -- Be able to perform heap operations by hand. -- Be able to think about the designs of the data structures covered so far and how they could be extended.