The final exam is scheduled for 8:30 AM on Tuesday, May 8.
The final exam for CPSC 225 is cumulative, with some emphasis on material covered since the second test. The new material includes: networking (Section 11.4); threads (Chapter 12); and advanced GUI programming (Sections 13.3 and 13.4), especially events and the Model/View/Controller design pattern.
The final exam is worth 20% of the grade for the course. It will be 6 or 7 pages long, with a format similar to other tests.
Here are some terms and ideas covered since the second test:
network connections and the Socket class the constructor: new Socket(host,port) the ServerSocket class the constructor: new ServerSocket(port); socket.getInputStream() and socket.getOutputStream() clients and servers; how to implement them with Socket and ServerSocket protocol the basic internet protocols, TCP/IP the HTTP protocol basic format of HTTP request headers and HTTP response headers mime types and the Content-Type header basic operation of a web server and how it can be implemented threads creating and starting threads; the run() method in a thread race conditions and deadlock the synchronized statement synchronization lock in every Object, and how it is used in synchronization mutual exclusion volatile variables multiprocessing: dividing up a job among available processors thread pools uses for threads: animation (as an alternative to Timers) background computation (for a responsive GUI during a long computation) parallel processing (for speeding up computation) dealing with blocking I/O (using a thread to receive network messages) blocking queues ArrayBlockingQueue<T> and LinkedBlockingQueue<T> the blocking operations queue.put(x) and queue.take() on a blocking queue the producer/consumer problem and how it is solved by blocking queues design patterns the MVC (Model/View/Controller) pattern relationships among the model, the view, and the controller how events are used in implementing the MVC pattern using multiple views of the same model JList ListModel and how it is used with JList PropertyChangeEvents "loose coupling" between components of a complex system
Here are some of the most important topics from earlier in the term:
abstraction analysis of algorithms Big-Oh and Big-Theta notation worst case and average case run times run-time analysis of operations on stacks, lists, trees, etc. exceptions and exception classes throwing an exception checked exceptions and mandatory exception handling the full try..catch statement, including the finally clause recursion and recursive methods base case of a recursion infinite recursion QuickSort examples of recursion such as maze-solving, blob-counting... linked data structures linked lists; traversing a linked list with a "runner" adding and deleting nodes in a linked list ADT (Abstract Data Type): what they are and why they are important the "queue" and "stack" abstract data types operations on stacks and queues (push/pop and enqueue/dequeue) implementation of stacks and queues as linked lists implementation of stacks as arrays postfix expressions and how they are evaluated using a stack binary trees pre-order, in-order, post-order traversal of binary trees recursive processing of binary trees expression trees generic programming and generic classes in Java the JCF (Java Collection Framework) Collection, List, ArrayList, LinkedList, Set, TreeSet, HashSet for-each loops for traversing a collection Map, TreeMap, HashMap hash tables and hash codes streams input versus output streams binary versus character streams files and the file class designing file formats
You can also see the review sheets for the two in-class tests,
which are available on-line.