Department: Computer Science and Engineering
Course code: CST 307
Course Name: Design & Analysis of Algorithm
Prerequisite: discrete mathematics and probability, Data Structure
Contact Hours and type of course: 4 hours/week (Lecture, Tutorial)
Course Assessment Methods: Test1, Test2 Teacher Assessment, End semester exam
|1||Ability to understand mathematical formulation, complexity analysis and
methodologies to solve recurrence relations for algorithms.
|Unit 1, 2|
|2||Ability to design algorithms using standard paradigms like:
Greedy, Divide and Conquer, Dynamic Programming and Backtracking.
|Unit 3, 4, 5|
|3||Ability to design algorithms using advance data structures and
implement traversals techniques.
|Unit 2, 5|
|4||Ability to understand NP class problems and formulate
solutions using standard approaches.
|5||Ability to apply algorithm design principles to derive solutions for
real life problems and comment on complexity of solution.
Mathematical foundations, summation of arithmetic and geometric series, n, n2 , bounding summations using integration, recurrence relations, solutions of recurrence relations using technique of characteristic equation and generating functions, Complexity calculation of various standard functions, principles of designing algorithms
Asymptotic notations of analysis of algorithms, analyzing control structures, worst case and average case analysis, amortized analysis, application of amortized analysis, Sorting networks, comparison networks, bio-tonic sorting network.
Greedy Algorithms: Contents
Introduction to Greedy algorithm and basic principle
Knapsack problem: Principle, numerical example, algorithm, complexity calculation, Minimum Cost Spanning Tree:
Prims Algorithm, Reverse Delete Algorithm
Single source shortest path algorithm:Dijkastra Algorithm, Optimized Dijkastra [Dial Algorithm]
Job Sequencing Problem: [Assignment on case study]
Maximum Flow Problem: Theory, numerical, example and application, Water Connection Problem: Theory, numerical, example, algorithm and application
Methodology to compute complexity of algorithm with each topic
Divide and Conquer: Contents
Introduction to Divide and Conquer and basic principle
Min-Max problem: Principle, example, algorithm, complexity, Quick Sort: Example, complexity equation
Matrix multiplication: Strassen’s Algorithm, Median of two sorted arrays
Closest pair algorithm: Case study and discussion on solution [Assignment on case study]
Introduction to dynamic programming and basic principle
Longest common sub-sequence and Longest increasing sub-sequence: Theory, example, algorithm, complexity
Optimal Binary Search Tree: Theory, example, application, algorithm, complexity
Minimum Edit Distance: Theory, example, application
Travelling Salesman problem: Theory, example, application
Multi-stage graph: Theory, example, algorithm, application, complexity
Coin Change problem: Theory, application, example
Maximum Sum Rectangle in 2D array: Theory, example [Assignment on case study]
Part-I: Basic Traversal Techniques:
Introduction and need of traversal techniques on trees and graphs
Articulation point in a Graph
Applications of DFS and BFS [Cloud computing preview]
Application of Inorder, preorder and postorder traversals [Big data preview]
Introduction, principle and need of backtracking
Sum of Subset, N-Queen, and Graph coloring: Principle, example, algorithm
Pattern matching without using regular expression
NP-hard and NP-complete problems, basic concepts, non-deterministic algorithms, NP-hard and NP-complete, decision and optimization problems, graph based problems on NP Principle.
- Thomas H. Cormen et.al. “Introduction to Algorithms”, Prentice Hall of India.
- Horowitz, Sahani, Rajsekharam, “Computer Algorithms”, Galgotia Publications Pvt. Ltd.
- Brassard, Bratley, “Fundamentals of Algorithms”, Prentice Hall
- Richard Johnsonbaugh, “Algorithms”, Pearson Publication.