CPE 103 Final Exam Study Topics
    
    1. Algorithm Analysis.
    Given a code segment, describe the order of magnitude of the running
    time (as a function of number of items). E.g. 5.20, 5.29
    Given the equation for running time of an algorithm and a sample
    data point, predict for some other value of N. E.g., 5.14, 5.15
    Analyze an algorithm from its description and give the worst case
    running time (Big O).   E.g., 5.39, 5.43
    Analyze an inefficient algorithm and describe how it could be
    modified to improve the running time. E.g., 5.28
    
    2. Stacks.
    Given a sequence of input items and a diagram of the finished stack,
    write the sequence of operations on the stack that would produce the
    desired state.
    Evaluate a postfix expression using a stack.
    
    3. Queues.
    Given a sequence of input items and a diagram of the finished queue,
    write the sequence of operations on the queue that would produce the
    desired state.
    
    4. Recursion.
    Be able to trace a recursive method and determine the output.
    
    5. Linked Lists.
    Given a diagram of a linked structure, write the Java statements
    that will produce the structure.
    
    6. Binary trees.
    Be able to draw a diagram of the tree that would be built from a
    sequence of calls to Weiss's Binary Node & Tree class methods.
    Given a tree diagram, create the statements to construct that tree.
    Given a binary tree, show the order nodes will be visited in a
    pre-order traverse, in-order traverse,
    and post-order traverse.
    
    7. Binary Search Trees.
    Given a list of items, insert the items into a binary search tree
    and draw a diagram of the resulting tree.
    Given a tree, show the result from a remove operation for nodes that
    have no children, one child, or two children. 
    
    8. AVL trees.  
    Given a list of items, insert the items into an AVL tree and draw a
    diagram of the resulting tree. (Single rotation only)
    
    9. Sets.  
    Given a code segment using Set operations, predict the
    results.  Given a Java Set, show the contents of the set after
    a series of set operations (insert,remove, contains, ...)
    
    10. Maps.  
    Given a code segment using Map operations, predict the results.
    
    11. Hashing.  
    Given a hashing function, a collision resolution strategy, and a set
    of keys, show how a hashtable would appear after inserting the keys
    into the table.
    Given a set of keys and a hashing function determine the average
    number of probes for a successful search and an
      unsuccessful search.
    Given a set of keys and a proposed hashing function, identify
    whether or not the function is a perfect hashing function, or
    minimally perfect.
    Given a hashtable's capacity and current size, compute the load
    factor.
    
    12. Sorting.  
    Be able to diagram the operation of each sort algorithm we studied.
    Given an array of numbers, show a trace of the array contents after
    each pass of a Bubble sort.
    Do the same for Insertion sort and Selection sort.
    See examples online.
    
    13. Graphs.
    Given a graph show how it would be represented using both adjacency
    matrix and adjacency list representations.
    Given an adjacency matrix or adjacency list, draw the graph that it
    represents.
    Given a graph, be able to compute its density.
    Given a graph, be able to determine the order nodes would be visited
    in a Breadth-First traverse or a Depth-First Traverse. 
    Given a graph, be able to show how the shortest path between two
    nodes is computed using Dijkstra's algorithm.  Show the order
    in which nodes will be visited. 
    
    14. Access Modifiers.
    For each of Java's access modifier's, indicate whether access is
    allowed from the class, subclass, package, and world.
    Exam Protocol
    Open book, closed note.
    No iPods, cell phones, or other electronic devices.  
    No water bottles on the desk.  
    Anticipate that you may not be allowed a bathroom break and attend
    to your personal needs accordingly.
    You will need a calculator (graphing calculators are not allowed).
    Write neatly in pencil.
    You may be assigned a specific seat.
    Anticipate that you may be asked to deposit your backpack, purse,
    etc at the front of the room.
    Please ask the instructor for assistance if a question is ambiguous
    or you aren't sure how to get started.
    The point value of each question is shown on the exam in
    parentheses.
    No hoodies or earphones.
    If you arrive so late that the first person has already finished the
    exam you won't be given an exam. 
    The instructor will announce "time's up" at which point you should
    quickly submit your paper. If the instructor leaves the room and
    your paper isn't in his possession you get a zero.