The final exam for CPSC 225 is cumulative, with some emphasis on material covered since the second test. That includes material: on networking (Socket and ServerSocket; the HTTP protocol); on threads (the synchronized statement, volatile variables, wait() and notify()); on parallel and distributed processing (Section 12.4); on Buttons and Actions (Section 13.3); and on the MVC patters and GUI components that use it (Section 13.4). The final exam is worth 20% of the grade for the course. It will be about 6 pages long.
Here are some terms and ideas covered since the second test:
network connections and the Socket class; constructor: new Socket(host,port) the ServerSocket class; constructor: new ServerSocket(port); socket.getInputStream() and socket.getOutputStream() clients and servers; how to implement them with Socket and ServerSocket using a thread to receive messages from a socket's input stream protocol 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 uses for threads: animation, as an alternative to Timers background computation parallel processing dealing with blocking I/O 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 load balancing thread pools wait() and notify() using wait() and notify() for low-level signaling between threads how wait() and notify can be used to implement a blocking queue distributed computing; the master/slave model Actions the AbstractAction class; creating Actions by subclassing AbstractAction using actions to make JButtons and JMenuItems, which take their properties from the Action action.setEnabled(enabled) action.putValue(Action.NAME,text) action.putValue(Action.SHORT_DESCRIPTION) the reason to use actions; the principles of nonredundancy and loose coupling 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 JTable and TableModel
Here are some of the most important topics from earlier in the term:
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 (such as Exception and RuntimeException) 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 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 and output streams, binary and character streams files and the file class designing file formats threads creating and starting threads; the run() method in a thread race conditions and deadlock blocking queues and the producer/consumer pattern
You can also see the review sheets for the two in-class tests,
which are available on-line.