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