CPSC 124, Spring 2006
Information about the Final Exam

The final exam for this course will take place in our regular classroom at the officially scheduled final exam period: 3:00 to 6:00 PM on Sunday, May 7. This is a cumulative exam, with some emphasis on the material that has been covered since the second in-class test. The new material primarily includes arrays (Chapter 8) and GUI programming (selected material from Chapters 6 and 7), but it will also include the short topics that were covered during the last week of classes (exceptions and try...catch, Section 9.3; and inheritance, polymorphism, and class hierarchies, Section 5.4).

The exam will be six or seven pages long, and should not take the entire three hours to complete. (However, you can use the full time period if you need it.) For the most part, you can expect the same types of questions that you encountered on the previous test: Writing code, reading and interpreting code, definitions and other short essay questions, and longer essays. Some of the questions will require more time and thought than the questions that could be given on a one-hour test.

You should consult the review sheets for Test 1 and for Test 2, but here are some of the most important terms and ideas from the first two-thirds of the course.

    machine language and high-level languages
    compilers; the "javac" command
    the "java" command and the Java Virtual Machine
    syntax and semantics
    programming style
    types; the primitive data types
    expressions and operators
    assignment statements
    subroutine call statements
    control statements (loops and branches)
    if, while, do..while, for, switch
    black boxes; interface vs. implementation
    subroutines and functions
    return type; "void"; return statement
    formal parameters vs. actual parameters
    access modifiers: public, private, protected, (none)
    static vs. non-static
    member variables vs. local variables
    using subroutines to write complex programs; top-down vs. bottom-up design
    "final static" variables (symbolic constants)
    objects and classes
    instance methods and instance variables
    "this" and "super"
    subclasses and superclasses; extending a class
    implementing an interface
    object-oriented programming
    GUI programming
    events and event-driven programs
    "state variables"
    listeners and event-handling methods
    mouse events, key events, action events
    the paintComponent method; drawing using the Graphics class
    using Eclipse for writing programs

And here are some new terms and ideas from the final third of the course:

   GUI components; JPanel, JButton, JLabel, JTextEdit
   basic component methods; setEnabled, setText, getText
   layout managers; GridLayout, BorderLayout, FlowLayout
   data structures
   element of an array; index of an element in an array
   length of an array
   base type of an array
   array types such as int[], String[]
   using "new" to create arrays
   using "new" to fill a new array with values ( e.g.:  "new int[] { 2, 4, 6, 8, 10 }" ) 
   arrays of objects
   random access to array elements
   using for loops to process arrays
   partially full arrays
   adding and deleting elements in a partially full array
   the selection sort algorithm
   inserting an element into a sorted array
   general idea of merge sort
   searching an array
   linear search
   binary search of a sorted array
   general idea about how one array can be much faster than another
   association list, such as a PhoneDirectory
   two-dimensional array
   rows and columns in a two-dimensional array
   two-dimensional array types such as int[][], Color[][]
   creating two-dimensional arrays using the "new" operator
   processing two-dimensional arrays using nested for loops
   off-screen images and the Image class
   "resources" such as sound and image files (definition and basic idea only)
   creating off-screen images for drawing; the createImage(width,height) method
   drawing on off-screen images; the getGraphics() method in the Image class
   using an off-screen image for double buffering
   using an off-screen image as a safe copy of the picture on the screen
   throwing an exception
   the try...catch statement
   Integer.parseInt(), Double.parseDouble(), and NumberFormatException
   inheritance and polymorphism
   abstract classes
   the abstract class Object
   designing class hierarchies

David Eck, March 2006