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
abstraction
syntax and semantics
programming style
comments
variables
types; the primitive data types
literals
expressions and operators
assignment statements
subroutine call statements
control statements (loops and branches)
if, while, do..while, for, switch
algorithms
pseudocode
debugging
black boxes; interface vs. implementation
subroutines and functions
return type; "void"; return statement
parameters
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
packages
"final static" variables (symbolic constants)
objects and classes
methods
instance methods and instance variables
constructors
references/pointers
"null"
"this" and "super"
subclasses and superclasses; extending a class
interfaces
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
arrays
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
ArrayIndexOutOfBoundsException
partially full arrays
adding and deleting elements in a partially full array
sorting
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
exceptions
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