Topics that will be on the final 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 - implementation issues, "usual" operations, when it is appropriate. Recursion - what it is, how it works, pros and cons of using it. Be able to read and write recursive code. JDBC - drivers, connections, queries, result sets, metadata, why you would use Java. Client/Server (see link in syllabus) - networking theory, jargon (IP, TCP, DNS, etc.), Socket, ServerSocket, multithreading in servers (why and how), protocols, well-known ports, how to write them in Java. Collections - common collection classes, usual operations, when you would use each. Everything in the programs you had to write - code, how to make design decisions, efficiency issues, etc.