CPSC 225 Fall 2007
Information About the First Test


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.


Here are some terms and ideas that you should be familiar with for the test:

    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

David Eck