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.