CS502 : Fundamentals of Algorithms

Course Overview

Course Synopsis

This course is designed to provide students with an understanding of the principles and techniques used in the design and analysis of algorithms. The course is primarily theoretical and does not require programming, but it does require understanding of the notion of a mathematical proof and some knowledge of elementary discrete mathematics. We will discuss and analyze a variety of data structures and algorithms chosen for their importance and their illustration of fundamental concepts. We will emphasize analyzing the worst-case running time of an algorithm as a function of input size. We will also spend some time exploring the boundary between feasible computations, taken to be those doable in polynomial time, and infeasible computations

Course Learning Outcomes

At the end of this course you should be able to :

  • Analyze the worst-case running time of an algorithm as a function of input size
  • Solve Recurrence relations
  • Understand and implement Divide and Conquer strategy
  • Understand the concepts of Dynamic programming
  • Understand the concepts of Greedy Algorithm
  • Understand the concepts of Graph traversing
  • Understand and explain basics of Complexity theory

Course Calendar

Introduction,Implementation Issues, Analyzing Algorithms1Handouts7-9
Model of Computation2Handouts10-10
Brute-Force Algorithm,Running Time Analysis3Handouts11-13
Analysis of the brute-force maxima algorithm4Handouts14-17
Plane-sweep Algorithm its analysis and Comparison to Brute-force Algorithim5Handouts18-22
Asymptotic Notation6Handouts23-26
Divide and Conquer Strategy,Merge Sort7Handouts27-28
Analysis of Merge Sort8Handouts29-30
Assignment No. 1
The Iteration and Recursion Tree Methods for Solving Recurrence Relations9Handouts31-33
Sieve Technique10Handouts34-35
Analysis of Selection, Sorting, Heaps11Handouts36-40
Heap sort algorithm12Handouts41-45
Quick sort13Handouts46-49
Average-case Analysis of Quicksort14Handouts50-53
Quiz No. 1
In-place,Stable Sorting15Handouts54-57
Radix sort16Handouts71-72
Assignment No. 2
Dynamic Programming ,Edit Distance Applications and Algorithim17Handouts73-77
Edit Distance: Dynamic Programming Algorithm and its Analysis18Handouts77-84
Chain Matrix Multiply19Handouts84-90
Chain Matrix Multiply20Handouts84-90
Knapsack Problem21Handouts91-92
Knapsack Problem: Dynamic Programming Approach22Handouts93-96
Greedy Algorithms,Examples:Counting Money23Handouts97-99
Huffman Encoding Algorithm24Handouts99-99
Huffman Encoding: Correctness, Activity Selection25Handouts100-104
Correctness of Greedy Activity Selection26Handouts105-106
Fractional Knapsack Problem ,Graphs27Handouts107-112
Graphs: Representations,Traversal28Handouts113-114
Assignment No. 3
Breadth-first Search,Generic Graph Traversal Algorithm29Handouts114-119
Breadth-first Search,Generic Graph Traversal Algorithm30Handouts114-119
DFS - Timestamp Structure ,DFS - Cycles31Handouts119-130
Precedence Constraint Graph ,Topological Sort32Handouts130-132
Strong Components and DFS33Handouts133-136
Quiz No. 2
Minimum Spanning Trees34Handouts137-141
Computing MST: Generic Approach,Greedy MST35Handouts142-143
Kruskal's Algorithm36Handouts143-146
Prim's Algorithm37Handouts147-152
Shortest Paths38Handouts153-154
Dijkstra's Algorithm39Handouts154-156
Correctness of Dijkstra's Algorithm, Bellman-Ford Algorithm40Handouts157-160
Floyd-Warshall Algorithm41Handouts161-168
Floyd-Warshall Algorithm42Handouts161-168
Complexity Theory,Classes P,NP43Handouts169-172
Reductions ,NP-Completeness44Handouts173-177
Boolean Satisfiability Problem:Cook's Theorem,Independent Sets45Handouts178-184
Final Examination
NOTE: It is a tentative plan and can be changed as per requirement. You are advised to check VULMS for updates and announcements from time to time.
Back to Top