CS2851 -- Detailed Outcomes

At the time of the Midterm Exam, a student should be able to:

  • Understand the meaning of asymptotic time complexity analysis. In particular:
    • Describe the value of big-oh notation.
    • Describe the limitations of big-oh notation.
    • Provide a definition for big-oh notation.
    • Be able to analyze the time complexity of simple algorithms with loops and conditionals.
    • Be able to analyze the time complexity of simple recursive methods.
    • Be able to compare the time complexity of two alternate algorithms.
    • Be able to analyze the time complexity of a program with multiple simple method calls with known time complexity.
  • Interpret and write Java code using the ArrayList and LinkedList classes.
  • Understand the underlying organization of the following data structures: array-based-list, double/singly-linked-list, stack, and queue. In particular:
    • Implement the basic methods of an array-based data structure.
    • Implement the basic methods of a singly-linked-list data structure.
    • Explain how the stack and queue data structures are typically implemented.
  • Describe and explain the time complexity for inserting, finding, and deleting items to/from the following data structures: ArrayList, LinkedList, stack, and queue.
  • Enumerate and explain the methods available in the pure stack and pure queue interfaces.
  • Define the term adaptor class and be able to implement a simple adaptor class, e.g., stack, queue.

At the time of the Final Exam, a student should, in addition to the above, be able to:

  • Understand and apply recursion in algorithm development.
  • Demonstrate the use of binary tree traversals.
  • Define a collision as it relates to hash tables and describe ways of coping with collisions.
  • Interpret and develop simple hashing functions.
  • Interpret and write Java code using the TreeMap, TreeSet, HashMap and HashSet classes.
  • Understand the underlying organization of the following data structures: binary trees, binary search trees, balanced binary search trees and hash tables. In particular:
    • Implement the basic methods of a binary search tree data structure (add, contains).
    • Implement the basic methods used for balancing a binary search tree data structure (leftRotate, rightRotate).
    • Explain how the TreeMap and TreeSet data structures are typically implemented.
  • Describe and explain the time complexity for inserting, finding, and deleting items to/from the following data structures: TreeMap, TreeSet, HashMap, and HashSet.
  • © 2001-2015 Dr. Christopher C. Taylor •
  • Office: L-343 •
  • Phone: 277-7339 •
  • npǝ˙ǝosɯ@ɹolʎɐʇ