Instructor: Dr. Natarajan Meghanathan
—————————————————–
Syllabus
Lecture Slides
Project Descriptions
Dr. Meg's Desktop Selected Lecture Videos
Quiz, Exam and Project Schedules
—————————————————–
Syllabus
Lecture Slides
Module 1: Algorithm Efficiency Analysis
Module 2: Classical Design Techniques
Module 5: Graph Theory Algorithms
Module 6: NP Complete Problems and Approximation Heuristics
Project Descriptions
Project 1: Element Uniqueness Problem, Due: Feb. 12
Project 3: Computing the Number of Paths of a Certain Length in a Graph using Matrix Multiplication, Due: March 5
Video Explanation: Vector Example Video Explanation: TreeMap Example
Project 5: Coin Collection Problem using Dynamic Programming
Project 6: Theorem Proving Project: Bloom Filters, Breadth First Search and Asymptotic Complexity
Dr. Meg's Desktop Selected Lecture Videos (YouTube Links)
Module 1 (Chapter 2): Analyzing the Efficiency of Algorithms
Time-Complexity analysis of a recursive algorithm to compute the factorial of an integer
Example for solving recurrence relations
Time-complexity analysis of an iterative algorithm to determine whether an array has unique elements
Module 2 (Chapters 3-6): Classical Algorithm Design Techniuqes
Brute Force Algorithms QB – String Matching Problems
Decrease and Conquer – Insertion Sort Algorithm and Examples
Divide and Conquer – Theorem-Proof: In order Traversal of a Binary Search Tree
Divide and Conquer – Master Theorem
Binary Search Algorithm and Examples
Comparison of Bottom-up and Top-down Approaches for Heap Construction
Transform and Conquer – Proof for Euclid's GCD Formula
Transform and Conquer – Heap Sort
Space-Time Tradeoffs for the Sorting Algorithms (Merge, Insertion and Heap Sorts)
Module 3 (Chapter 9): Greedy Technique
Greedy Technique – Fractional Knapsack Problem
Greedy Technique – Huffman Codes (Variable Length Prefix-free Encoding)
Module 4 (Chapter 8): Dynamic Programming
Dynamic Programming: Coin-row Problem Discussion and Example
Dynamic Programming: Binomial Coefficient
Dynamic Programming: Coin-Collecting Problem for a Robot in a Two-dimensional Grid
Dynamic Programming: Integer Knapsack Problem (0-1 Knapsack Problem)
Module 5: Graph Theory Algorithms
Depth First Search on Directed Graph
Depth First Search and Articulation Points
Breadth First Search and 2-Colorability of Graphs
Topological Sort on DAGs and Proof for Neccessary and Sufficient Condition
Dijkstra's Algorithm for Shortest Path Trees and Proof for Correctness
Bellman-Ford Algorithm for Shortest Path Trees and Examples New!!
Kruskal's Algorithm: Examples to find Minimum Spanning Trees
Kruskal's Algorithm: Proof of Correctness
Properties (1 and 2) of Minimum Spanning Tree: IJ-Cut and Minimum Weight Edge
Prim's Algorithm for Minimum Spanning Trees and Proof for Correctness
Floyd's All Pairs Shortest Paths Algorithm
Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7
Module 6: P, NP and NP-Complete Problems
Polynomial Reduction: Hamiltonian Circuit to Traveling Salesman Problem
Polynomial Reductions: Independent Set, Clique and Vertex Cover
Multi-fragment Heuristic for the Traveling Salesman Problem
Quiz, Exam and Project Schedules