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 - Java 1.2 components, containers, layout managers, event handlers. Animation - the basic animation loop, Timers, Threads, the etiquette for animations. Strings, StringBuffers, StringTokenizer - what each class does, when you would use them, and why. Java I/O - everything Exception handling - try, catch, throws, throw and finally. Big-O - definition, identifying what to use for n, computing f(N), finding Big-O, relative "goodness" of the various functions used for g(N), the role of C and No in using Big-O to choose an algorithm, etc. Sorting algorithms - Merge Sort, Selection Sort, 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, what goes in one, what doesn't go in one, why they are useful. Steps in implementing an ADT in Java LinkedList, Stack, Queue ADTs - implementation issues, "usual" operations, when each is appropriate. BinaryTrees Recursion Everything in the programs you had to write - code, how to make design decisions, efficiency issues, etc.