Goals:
Students should be able to Design and Analyze intermediate level
algorithms for correctness, completeness and discuss complexity trade-offs.
Learning Objectives: Students should be able to
Understanding of P, NP, NPC, NPH problems, NP-Completeness and Approximate Probl
Course Policies / Guidelines, Introduction / Overview, Basics of Algorithms, Mathematical Foundation
Growth of Function, Asymptotic Notations, Time and Space Complexity, Iterative Algorithms Analysis, Algorithms Constructs, Fibonacci, and Factorial Algorithms
Sorting (Bubble, Selection, Insertion, Counting, Radix)
Recursive Algorithms, Analysis of Recursive Algorithms, Recurrence Tree, Recurrence Relation
Iterative Substitution, Telescoping Sum, Divide and Conquer Approach, Sorting (Merge Sort, Quick Sort), Fibonacci and Factorial Recursive Algorithms
Analysis of Data Structures (Stack, Queue, Linked List, Hash Table, Binary Tree)
Graph Theory, Graph Terminology, Representation of Graphs, Graph Traversal (BFS & DFS)
Midterm, Midterm Solution
Optimization Problems, Greedy Algorithms, Shortest Path Finding in Graph (Dijkstra’s Algorithm)
Greedy Algorithms: Minimum Spanning Trees (Kruskal’s Algorithm, Prim’s Algorithm), Huffman Coding for Data Compression
Dynamic Programming, Memmoized Algorithms, Tabular Method, Knapsack Problem.
Dynamic Programming: Matrix Multiplication, Matrix Chain Multiplication Problem
String Matching, Longest Common Subsequences
NP Complete Problems and Solutions using Approximation Algorithms
Approximation Algorithms
Revision, Project Presentations