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. 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 the are useful. Steps in implementing an ADT in Java LinkedList, Stack, Queue ADTs, BST - implementation issues, "usual" operations, when each is appropriate. Recursion - what it is, how it works, pros and cons of using it. Be able to read and write recursive code. 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. JDBC - drivers, connections, queries, result sets, metadata, why you would use Java. XML - DTD, parsers, SAX, what it is, why it is used, how you use it, why use Java with it. Whatever I cover on Friday. Everything in the programs you had to write - code, how to make design decisions, efficiency issues, etc.