The first of the two in-class tests for this course takes place on Friday, September 28. It will cover everything that we have done in class up to and including Monday, September 24. From the textbook, this includes Chapter 1, Sections 2, 3, 4, and 6; and Chapter 2, Section 1 plus Section 2 through 9.2.3. You are also responsible for the material from the first four labs.
program correctness
program robustness
various approaches to handling errors
(error message, special return value, end the program, throw an exception)
exceptions
throwing an exception
Exception classes: Throwable, Error, Exception, RuntimeException
IllegalArgumentException, IllegalStateException, NumberFormatException, etc.
exception objects
e.getMessage() and e.printStackTrace() for an exception e
checked exceptions and mandatory exception handling
why some exceptions require mandatory exceptions
the "throws" clause in a method declaration
catching an exception
the try..catch statement
the "finally" clause of a try..catch statement
how uncaught exceptions are processed; unwinding the call stack
preconditions and postconditions
using exceptions when checking preconditions and postconditions
assertions
the assert statement
using assertions when checking preconditions and postconditions
enabling and disabling assertions at run time
reasons for using assertions instead of exceptions
Analysis of Algorithms
Θ(f(n)) and O(f(n)) -- "Theta of f of n" and "Big-Oh of f of n"
why Theta and Big-Oh only give you information "up to a constant multiple"
why Theta and Big-Oh only give you information about "sufficiently large n"
why "lower order terms" can be discarded in Θ(f(n)) and O(f(n))
run-time analysis
worst-case, average-case, and best-case run time
applying run-time analysis to a given code segment
comparison of run times, such as Θ(n) vs. Θ(log(n))
what is the meaning of log(n)?
comparing linear search and binary search
comparing insertion sort and quicksort
recursive method (or subroutine)
recursive binary search
factorial as a recursive function
base case of a recursion
recursive "blob counting"
infinite recursion
"marking" items that have been processed to avoid infinite recursion
QuickSort
what is accomplished by QuickSortStep?
informal run-time analysis of QuickSort
activation record (or "stack frame") created when a method is called
how activation records and the stack are used to implement recursion
infinite recursion and stack overflow
linked data structures
linked lists
ListNode classes
following links: runner = runner.next
the head of a list
empty list (head == null)
using a "while (runner != null)" loop to process all the items in a list
searching a list
adding an item to the head of a list
basic ideas about Eclipse and CVS
integrated development environment
debugging in an integrated development environment
breakpoints
CVS repository
Committing and Updating a project in CVS