Topics for the final ==================== Make sure you understand all the parts of A1-A5. Everything since the prelim: GUI dynamics Design Patterns - Basic ideas behind Composite, Visitor, Iterator patterns Big-O notation and asymptotic complexity - Counting the running time of an algorithm - Formal definition of big-O - Informal understanding of big-O - asymptotic complexity of the algorithms and operations on data structures mentioned below, and why Algorithms - linear and binary search - insertion sort, quicksort, heapsort, mergesort, selection sort - Dijkstra's algorithm - Floyd-Warshall's algorithm Data structures - Heaps - Binary Search Trees - AVL Trees - Hashtables - Graphs (adj. matrix and adj. list) Everything from before the prelim: Lists Basic list operations List tradeoffs List design choices - Doubly vs. Singly linked - Header objects - Circular lists Trees Tree traversals Binary Search Trees Abstract Syntax Trees N-ary trees Recursion Basic principles Tracing recursive execution Writing recursive functions Induction Basic principles Strong vs. Weak induction Proving things about algorithms Grammars & Parsing Context free grammars Recursive descent parsers Tokenizers Subtyping Implementing Interfaces Extending classes Standard type hierarchy Casting and instanceof Inheritance Overriding vs. Shadowing Static vs. Dynamic dispatch abstract methods and classes Exceptions try/catch throw throws Standard Exception hierarchy Generics Using generics Generic classes Generic methods Wildcards Bounded wildcards GUI statics