COT 5410 Course Calendar Week Date Coverage Assignments Due Date 1 Details 8/25 Course Syllabus, Chapters 1, 2, 3 Assignment 1 9/15 2 Details 9/1 Chapters 4, 6, 7, 8.1 Assignment 1 9/15 3 Details 9/8 Sorts continued Assignment 1 9/15 4 Details 9/15 Sequential and Binary Search Assignment 2 10/6 5 Details 9/22 Positional and Associative Data Structures Assignment 2 10/6 6 Details 9/29 Set < Hash > Assignment 2 10/6 7 Details 10/6 Binary Tree and Binary Tree Iterators Assignment 3 11/10 8 10/13 Midterm Exam: Covers weeks 1-6 9 Details 10/20 Set < Binary Search Tree > Assignment 3 11/10 10 Details 10/27 Set < Red-Black Tree > Assignment 3 11/10 11 Details 11/3 Graphs, Digraphs, Breadth First Search Assignment 3 11/10 12 Details 11/10 Other Graph Algorithms Paper Topics 13 Details 11/17 Student Presentations 14 11/24 Thanksgiving Eve - no class 15 Details 12/1 Student Presentations 16 12/8 Final Exam: Cummulative exam covers entire course
Note: Otherwise uncited references to chapters, sections, exercises, and problems refer to the course textbook Introduction to Algorithms, T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, second edition, MIT press, 2001 (ISBN 0-262-03293-7).
 Details: Week 1 Topics: Introduction Growth of Functions Analyzing Algorithms Objectives: At the end of this class the student should be able to: Describe the course policies and grading criteria. Define algorithm in the strict sense and relate the definition to the meaning of the word in the text. Define Big O, Big Theta, Big Omega, little o, and little omega and state and prove the basic relationships among them. Describe the algorithm hypotheses and body for InsertionSort. Prove correctness of InsertionSort. Provide runtime analysis for InsertionSort. Reading: Course Syllabus Textbook: Chapters 1, 2, 3 Suplemental: Notes 1: Introduction to Algorithms Formulas Exercises: 1.2-3, 2.1-3, 2.2-2, 2.3-3, 3.1-3, 3.1-4 Assignment: Assignment 1 Problem 1: Problem 3-1 on p. 57 Assignment 1 Problem 2: Problem 3-2 on p. 58
 Details: Week 2 Topics: Recurrences Objectives: At the end of this class the student should be able to: Apply the substitution method and tree method to obtain asymptotic solutions of recurrences. Solve the Fibonacci recurrence exactly (using the characteristic polynomial) and asymptotically State the Master Method for finding asymptotic solutions for recurrences. Apply the Master method to find asymptotic bounds on certain recurrences. Reading: Textbook: Chapters 4, 6, 7, 8.1 Suplemental: Notes 2: Recurrences Formulas Exercises: 4.3-1, 4.3-3, 6.1-1, 6.1-3, 6.1-5, 6.2-5, 6.2-6, 6.4-3, 6.4-4, Assignment: Assignment 1 Problem 3: Problem 4-5 on p. 86 Assignment 1 Problem 4: Problem 6-1 on p. 142 Assignment 1 Problem 5: Problem 7-4 on p. 162
 Details: Week 3 Topics: SimpleSort, MergeSort, HeapSort QuickSort Objectives: At the end of this class the student should be able to: Describe the algorithm hypotheses and body for SimpleSort, MergeSort, HeapSort, and QuickSort Give the best, average, and worst case runtimes for SimpleSort, MergeSort, HeapSort, and QuickSort, and outline the proofs. Prove correctness of SimpleSort, MergeSort, HeapSort, and QuickSort Derive and prove the best case asymptotic runtime for a comparison sort, and apply the results to InsertionSort, SelectionSort, MergeSort, HeapSort and QuickSort Describe the pros/cons of choosing one of these sorts over another in a given practical setting. Reading: Textbook: Chapters Suplemental: Notes 3: Sorting Formulas Exercises: 7.1-1, 7.1-3, 7.2-3, 7.2-4, 7.4-2 Assignment: Assignment 1 Problem 6: Prove correctness (including halting) of SimpleSort (use loop invariants) Assignment 1 Problem 7: Provide worst and average case runtime analysis of SimpleSort Assignment 1 Problem 8: Provide runspace analysis of SimpleSort
 Details: Week 4 Topics: SequentialSearch, BinarySearch Objectives: At the end of this class the student should be able to: Describe the algorithm hypotheses and body for SequentialSearch and BinarySearch Prove correctness of SequentialSearch and BinarySearch. Derive the worst and average case runtime of SequentialSearch and BinarySearch Reading: Textbook: Chapters Suplemental: Notes 4: Searching Formulas Exercises: Halting of BinarySearch Correctness of BinarySearch Runtime analysis of BinarySearch Runspace analysis of BinarySearch Assignment: Assignment 2 Problem 1: Prove correctness of SequentialSearch Assignment 2 Problem 2: Worst and average case runtime analysis of SequentialSearch Assignment 2 Problem 3: Prove correctness of BinarySearch Assignment 2 Problem 4: Worst and average case runtime analysis of BinarySearch Assignment 2 Problem 5: Explain why there is no short circuit bailout in BinarySearch
 Details: Week 5 Topics: Positional and Associative Data Structures Objectives: At the end of this class the student should be able to: Define each of the following ADTs in terms of public interface or operations: Vector List Deque Stack Queue Set MultiSet Table / Map / Associative Array MultiMap Classify these ADTs as positional or associative Give runtime requirements for the operations in the positional ADTs above Discuss tradeoffs for various runtime requirements for the operations in the associative ADTs above Reading: Textbook: Chapters 10, 12 Suplemental: Notes 5: Sequential ADTs and Data Structures Notes 6: Associative ADTs Exercises: 10.2-1, 10.2-5, 10.3-1, 12.1-1, 12.3-3 Assignment: Assignment 2 Problem 6: Exercise 10.2-7 on p. 209 Assignment 2 Problem 7: Exercise 12.1-3 on p. 256
 Details: Week 6 Topics: Hashing Implementatons of Set and Table (Unsorted) Objectives: At the end of this class the student should be able to: Define and give examples of hash function Show the structure of hash table implemented with chaining Define uniform hashing State the expected access time for hash tables, and prove these assertions Reading: Textbook: Chapter 11 Suplemental: Notes 7: Searching in Hash Structures Exercises: 11.2-2, 11.2-3 Assignment: Assignment 3 Problem 1: Exercise 11.2-3 on p. 229 Assignment 3 Problem 2: Exercise 11.2-5 on p. 229
 Details: Week 7 Topics: Binary Trees Binary Tree Iterators Objectives: At the end of this class the student should be able to: Discuss representation of trees and binary trees using dynamically created nodes Discuss binary tree iterators Explain why the increment operator ++ for a binary tree iterator has amortized constant runtime Reading: Textbook: Chapter Appendix B.5 Suplemental: Notes 8: Binary Trees Exercises: Assignment: Assignment 3 Problem 3: For the following binary tree, complete the table showing each step in a traversal and the number of edges covered by each step (begin, next, ... , next): ``` iteration step current location no of edge moves Q -------------- ---------------- ---------------- / \ 1. initialize W E 2. ++ \ / \ 3. ++ R T Y ... 7. ++ (null) ```
 Details: Week 9 Topics: Binary Search Trees as ordered binary trees Sets as Binary Search Trees Objectives: At the end of this class the student should be able to: Define Binary Search Tree (BST) in terms of order on a Binary Tree Show that binary tree iterators encounter BST vertices in sorted order Describe the BST Search, Insert, and Delete algorithms Estimate the asymptotic runtime of BST Search Describe the BST implementation of Set Reading: Textbook: Chapter 12 Suplemental: Notes 8: Set < Binary Search Tree > Exercises: Assignment: Assignment 3 Problem 4: Describe an order in which vertices of a BST can be saved to ensure that reconstructing a BST from the saved data will result in the same tree. Argue correctness of your assertion.
 Details: Week 10 Topics: Red-Black Trees Implementation of Set and Table (Sorted) Objectives: At the end of this class the student should be able to: Define Red-Black Tree Illustrate specific instances of red-black trees Discuss the algorithms LeftRotate and RightRotate Discuss insertion and deletion in red-black trees State and prove the worst-case runtime for set operations, when the set is implemented as a red-black tree Reading: Textbook: Chapter 13 Suplemental: Notes 9: Red-Black Trees Exercises: 13.1-2, 13.1-6, 13.2-1, 13.3-2 Assignment: Assignment 3 Problem 5: Exercise 13.2-4 on p. 279 Assignment 3 Problem 6: Exercise 13.3-5 on p. 287
 Details: Week 11 Topics: Graphs, Digraphs, Breadth First Search (BFS) Objectives: At the end of this class the student should be able to: Define Graph, Directed Graph (Digraph), and Network Describe adjacency matrix representations of graphs, digraphs, and networks Describe adjacency list representations of graphs, digraphs, and networks Discuss how additional vertx and/or edge data can be assoicated with these representations Describe the BFS algorithm on a graph or digraph G with Queue control Explain why the runtime of BFS is O(V + E) (where V is the number of vertices of G and and E is the number of edges of G) Define the BFS Tree of a BFS search of G Explain the relationship between the BFS tree and shortest paths in G Reading: Textbook: Chapters Suplemental: Notes 10: Graphs and Digraphs Exercises: Assignment: Assignment 3 Problem 7: Exercise 22.1-1 on p. 530 Assignment 3 Problem 8: Exercise 22.2-2 on p. 538
 Details: Week 12 Topics: Depth First Search (DFS), Topological Sort Objectives: At the end of this class the student should be able to: Describe the DFS algorithm with Stack control Explain why the runtime of DFS is O(V + E) Define the DFS Forrest of a DFS search Define the DFS [discovered,finished] interval for the vertices of G, and explain the Parenthesis Theorem Describe the Topological Sort problem for a Digraph Explain how DFS can produce a Topological Sort Reading: Textbook: Chapters Suplemental: Notes 10: Graph Algorithms Exercises: Assignment: Assignment 3 Problem 9: Exercise 22.4-1 on p. 551 Assignment 3 Problem 10: Exercise 22.4-5 on p. 552
 Details: Student Presentations Topics: Ernest Murray: Runtime cost comparisons: Interpreted v Compiled Programs Sarah Jones: Splay Tree Implementation of Set Sandra Coppedge: Runtime and Runspace as Software Requirements
 Details: Student Presentations Topics: George GilmanAnalysis of Quantum Framework Internals Steve KantorThe A* Search Algorithm Dyana VauseSkip-List Implementation of Set Ryan CloseAnalysis of Genetic Algorithms Internals Sharon McInnisThe Importance of Algorithm Proofs and Runtime Analyses in Management Shane SlusserWeb Search Algorithms Jason Holliday: Primality Algorithms