| | | | | |

    Course Goals and Objectives (What you should get out of the course)

    Data Structures

    • Definition, implementation, and use of the following concepts:
      Positional ADTs: vector, list, deque, stack, queue, binary tree, graph, directed graph, directed acyclic graph (DAG), network
      Associative ADTs: set, map, multiset, multimap, priority queue, table, associative array
    • Definition and use of iterators associated with these ADTs
    • Familiarity and experience implementing these abstractions, including their associated iterator classes and including performance constraints (in terms of runtime complexity) on the operations. Implementations will include the following: vector, list, deque, stack, queue, priority queue, sorted list, binary tree, binary search tree, hash table, associative array, hash set, AVL tree, red-black tree, graph, directed graph, network. Note that this implies the detailed study of trees of several types along with their implementation structures and the use of template classes as well as the elementary study of algorithms and their complexity.

    Algorithms

    • Familiarity and experience with algorithm theory: proof of correctness, complexity analysis, and NP complete problems
    • Familiarity and experience with certain categories of algorithms according to their structure, including: Divide & Conquer, Dynamic Programming, Greedy Algorithms, and Randomized Algorithms
    • Familiarity and experience with certain categories of algorithms according to their application, including: Search Algorithms, Sort Algorithms, Graph Algorithms (including surveys, topological sort, spanning trees, shortest paths, maximum flows), and Disjoint Sets / Union-Find

    Generic Programming

    • Familiarity and experience with generic containers as class templates with typename template parameters
    • Familiarity and experience with generic algorithms as function templates with iterator template parameters

| | Top of Page | 0. Introduction to COP 4531 - 3 of 10