Topics that will be on the midterm exam Java syntax - (be able to write basic applets, applications, and classes; know all the Java keywords and operators and how to use them.) GUI design and implementation - Swing and AWT components, containers, layout managers, event handlers. Animation - the basic animation loop, Threads, the etiquette for animations. Strings, StringBuffers, StringTokenizer - what each class does, when you would use them, and why. Java I/O - Exception handling - try, catch, throws, throw and finally. Big-O - definition, identifying what to use for n, computing g(n), finding Big-O, relative "goodness" of the various functions used for f(n), the role of C and N in using Big-O to choose an algorithm, etc. Sorting algorithms - BubbleSort, InsertionSort, SelectionSort, trade-offs in choosing sorting algorithms, Big-O. Searching algorithms - linear search, binary search, how searching applies to various data structures, Big-O. Abstract Data Types - definition, how to write one, what goes in one, what doesn't go in one, why they are useful. Steps in implementing an ADT in Java LinkedList, Stack, Queue, Binary Search Tree ADTs - implementation issues, "usual" operations, when each is appropriate. Recursion Everything in the programs you had to write - code, how to make design decisions, efficiency issues, etc.