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
|