CPSC 124, Fall 2005
Information Sheet for the Final Exam

The final exam for this course will take place on Thursday, December 15, at 7:00 PM. It will be held in Gulick 206A, which is just next to the Gulick 208 computer lab. This is a cumulative exam, with some emphasis on the material that we have covered since the second test. You will want to look over the review sheets for the first test and second test.

The format of the final exam will be similar to that of the two in-class tests. It might include definitions, short answer questions, and longer essays. You can expect to write some Java code, including some code segments, complete subroutines, and possibly a complete class. You might be given some code and be asked to explain what it does.

You can expect at least one long essay question on a general topic such as programming style and why it is important; program development with stepwise refinement, top-down and bottom-up design, and object-oriented programming; or abstraction and how it relates to black boxes and modularity.

My office hours for exam week are as follows:

             Monday, December 12:     11:00 -- 12:00 and 1:30 -- 3:00
             Tuesday, December 13:    11:00 -- 2:00
             Wednesday, December 14:  11:00 -- 3:00
             Thursday, December 15:   12:00 -- 1:20

Here are some of the things that we have covered since the last test:

   GUI Components
   the idea of "laying out" components in a JPanel
   adding a component to a container
   events and listeners
   using an ActionListener to respond to a JButton
   the actionPerformed(ActionEvent e) method
   using the setText() and getText() methods with JButton, JLabel, and JTextField
   enabling/disabling buttons to reflect the state of a program

   the paintComponent(Graphics g) method
   using instance variables to store information about what needs to be drawn
   calling the repaint() method
   the special variable "this"
   base type of an array
   array types:  BaseType[]
   elements of an array
   index of an array element; A[i]
   using a for loop to process an array
   using an array of objects
   creating an array with:  new BaseType[N]
   creating an array with specified contents, such as:  new int[] { 2, 4, 6 }
   random access to array elements
   partially full arrays
   using a counter to keep track of how many items are in an array
   managing a list whose size can change -- adding and deleting elements
   the selection sort algorithm
   linear search
   binary search
   two-dimensional arrays
   rows and columns of a two-dimensional array
   createing a two-dimensional array with:  new BaseType[ROWS][COLUMNS]
   processing a two-dimensional array with nested for loops
   abstract classes
   design of class hierarchies
   processing an array of objects of different types
   typecasting objects
   the try/catch/finally statement
   NumberFormatException, Double.parseDouble(s) and Integer.parseInt(s)
   the throw statement
   Exception methods  e.getMessage() and e.printStackTrace()
   control abstraction
   procedural abstraction
   data abstraction
   the stram abstraction; InputStream and OutputStream