Topics and Learning Objectives

A rough list of topics covered, by week:

Week 1 – Analysis and Running Time of Linear Algorithms

Week 2 – Algorithm Correctness and Linear Sorting

Week 3 – Linked lists, Stacks, and Queues

Week 4 – Analysis and Correctness of Recursive Algorithms

Week 5 – Recursive Sorting and Intro to Trees

Week 6 - Tree Traversals

Week 7 – Binary Search Trees

Week 8 – B-Trees

Week 9 – Hashing

Week 10 – Priority Queues, Heaps, Heapsort

Week 11 – Disjoint Sets, Graph Definitions

Week 12 – Graph Implementation and Traversal

Week 13 – Minimum Spanning Trees, Shortest Path

 

Course Learning Objectives:

  1. Define and articulate the functionality of classic data structures such as Stacks, Queues, Dictionaries, Priority Queues, etc. by their Abstract Data Type (ADT).
  2. Design algorithms and structures to implement novel ADTs based on properties of the data and intended use of the data.
  3. Implement classic and novel data structures in modern C++, including arrays, linked lists, AVL trees, hash tables, etc.
  4. Analyze the efficiency (time and space) of algorithms and data structures using asymptotic notation.
  5. Justify algorithmic choices using iterative and recursive proofs of correctness.
  6. Evaluate asymptotic time and space tradeoffs between implementation options.
  7. Identify the structures and algorithms necessary for solving complex problems.
  8. Synthesize and apply algorithmic and analytical design choices to form complete software solutions of classic problems.