Plan for ITCS 6114: Algorithms and Data Structures

Overreaching Learning Outcomes

OLO1. Articulate that design, complexity, and correctness of algorithms and data structures matter in the real world

OLO2. Design correct and low complexity algorithms and data structures by employing standard techniques

OLO3. Analyze and implement given algorithms and data structures

OLO4. Recognize faulty algorithmic logic

Detailed Learning Outcomes

On Complexity

DLOC1. Interpret complexity notation and their implications on the performance/resource consumption of algorithms (OLO1, OLO2)

DLOC2. Articulate the real-world implication of the design of algorithms and data structures in term of performance (OLO1)

DLOC3. Derive the complexity of algorithms using various techniques (for instance, master theorem, amortized analysis, and average case analysis) (OLO1, OLO2, OLO3, OLO4)

DLOC4. Prove the NP-Completeness of classic problems (OLO2, OLO4)

DLOC5. Leverage the P != NP conjecture to recognize dubious algorithmic claims (OLO4)

On Correctness

DLOCo1. Recognize and prove the invariant of data structures and algorithms (OLO2, OLO4)

On Data Structures

DLOD1. Design, analyze, and implement tree-based indexes (OLO2, OLO3)

DLOD2. Design, analyze, and implement hash-based indexes (OLO2, OLO3)

DLOD3. Design, analyze, and implement classic algorithms on graphs (OLO2, OLO3)

On Algorithmic Techniques

DLOA1. Create, analyze, and implement divide and conquer algorithms (OLO2, OLO3)

DLOA2. Create, analyze, and implement greedy algorithms (OLO2, OLO3)

DLOA3. Create, analyze, and implement dynamic programming algorithms (OLO2, OLO3)

Agenda.

Note that Lecture could be an actual lecture, or student watching a video, or reading text book, or wikipedia.

Activity is something student do maybe in class, in pair, or for the next session, usually graded in some sense (could be detailed grading, could be pass/fail).

Week 1. Sep 8.

Lecture:

  1. Introduction.
  2. Complexity notations [DLOC1].

Activity:

  1. Proving simple complexity notation properties [DLOC1].
  2. Interpreting complexity notation in term of practical cost or feasibility [DLOC1, DLOC2].

Week 2. Sep 15.

Lecture:

  1. Analyzing simple algorithms [DLOC3].
  2. Invariant and correctness [DLOCo1].
  3. Simple recursive complexity formulas [DLOC3].

Activity:

  1. Given simple algorithms (binary search, insertion sort, simple nearest neighboor), prove their correctness and complexity [DLOCo1, DLOC3].
  2. Implement and benchmark insertion sort and simple nearest neighboor [DLOC1, DLOC2].

Week 3. Sep 22.

Lecture:

  1. Divide and Conquer [DLOA1].
  2. Merge sort [DLOA1, DLOCo1].
  3. Master Theorem [DLOC3].

Activity:

  1. Solve some other problem using D&C [DLOA1].
  2. Implement and benchmark Merge Sort [DLOC2].

Week 4. Sep 29.

Lecture:

  1. Tree-based indexing [DLOD1].
  2. Invariant of data structure [DLOCo1].
  3. Using BST for associative array [DLOD1, DLOC2].

Activity:

  1. Run BST manually on toy example [DLOD1].
  2. Design, analyze, and implement a tree base index for nearest neighbor query [DLOD1, DLOC2].

Week 5. Oct 6.

Lecture:

  1. Average case analysis (both for randomized algorithms and deterministic algorithm under input stochastic distribution) [DLOC3].
  2. Quick Sort. [DLOA1]

Activity:

  1. Revisit quad-tree average case analysis under uniform distribution assumption [DLOC3].
  2. Implement and benchmark Quick Sort? [DLOC2]

Week 6. Oct 13.

Mid Term.

Week 7. Oct 20.

Lecture:

  1. Hashing and hash tables [DLOD2].
  2. Invariant and complexity [DLOCo1, DLOC3].
  3. Usage for associative array. [DLOC2]

Activity:

  1. Run hashing manually on toy example [DLOD2].
  2. Design, analyze, and implement a hashing based method for nearest neighboor [DLOC2, DLOC3, DLOD2].

Week 8. Oct 27.

Lecture:

  1. Basic graphs [DLOD3].
  2. Representations[DLOD3].
  3. BFS/DFS [DLOD3].
  4. Bipartite graph?[DLOD3]

Activity:

  1. Topological sort [DLOD3].
  2. (Implementation on UNCC BS in CS course? Critical Path of parallel algorithms[DLOC2]? maybe LS for P|prec|Cmax[DLOC2]?)
  3. BFS[DLOD3].
  4. (Implementation: Bacon number with benchmark[DLOC2]? Garbage collection in VMs[DLOC2]?)

Week 9. Nov 3.

Lecture:

  1. Greedy algorithms [DLOA2].
  2. Greedy property [DLOCo1].
  3. Complexity [DLOC3].
  4. On some simple problem, Maybe 1 | | \sum C_i?

Activity:

  1. Coin change [DLOA2].
  2. Values of coin change where greedy doesn't work [DLOCo1].
  3. Given a greedy algortihm for Knapsack, why doesn't it work [DLOCo1]?

Week 10. Nov 10.

Lecture:

  1. Spanning trees [DLOD3].
  2. Either Kruskal or Prim [DLOA2].
  3. union-find data structure [DLOD1].

Activity:

  1. Run algorithm on a toy graph[DLOD2, DLOA2].
  2. Spanning tree in Charlotte's road[DLOC2]?

Week 11. Nov 17.

Lecture:

  1. Dynamic program[DLOA3].
  2. Optimal substructure[DLOA3, DLOCo1].
  3. Deriving complexity[DLOC3].
  4. Two types of implementations [DLOD2].

Activity:

  1. Dynamic program on Knapsack[DLOA3]? Dynamic Programming on Bin Packing[DLOA3]?
  2. Dynamic Programming for optimal BST given access probabilities[DLOA3 DLOD1]?
  3. Implementation of one problem [DLOA3, DLOD2]

Week 12. Nov 24.

Lecture:

  1. Shortest Path[DLOD3].
  2. Ford Bellman[DLOD3, DLOA3]
  3. Dijkstra[DLOD3, DLOA2].

Activity:

  1. Run both algorithms on toy graph[DLOD3, DLOA2, DLOA3].
  2. Implement and benchmark both shortest path algorithms on Charlotte's graph [DLOA2, DLOA3, DLOD3, DLOC2].

Week 13. Dec 1.

Lecture:

  1. Network flow[DLOD3].
  2. Ford-Fulkerson[DLOD3].
  3. max flow-min cut duality theorem.

Activity:

  1. Bipartite matching[DLOD3].
  2. Modeling problems as network flow[DLOC2?].

Week 14. Dec 8.

Lecture:

  1. NP Completeness[DLOC4, DLOC5].
  2. Reductions[DLOC4].

Activity: 1. Some classic reduction HP-HC, BP-Knapsack, 2part-knapsack, take your pick[DLOC4]. 2. "Are these claims credible possibles"? [DLOC5] (for instance Is there a contradiction between the dynamic programming for Knapsack and Bin Packing and their NP-Completeness)

Week 15. Dec 15.

Buffer. If there is time, approximation algorithm, or branch and bound, or meta heuristics, or ILP

Final. Dec 22.