UCS415:DESIGN AND ANALYSIS OF ALGORITHMS
L T P Cr
3 0 2 4.0
Course ObjectiveTo provide students with the knowledge and skills necessary to design
and analyse algorithms for solving computational problems.
Syllabus:
Introduction and Complexity Analysis: Analysing algorithms, Complexity classes, Time
and space trade-offs in algorithms, Recurrence relations, Analysis of iterative and recursive
algorithms, Amortized Analysis.
Algorithm Design Techniques and Analysis
Divide and Conquer: Fundamentals of divide and conquer strategy, Applications such as
The maximum subarray problem, Strassen’s algorithm for matrix multiplication, merge
sort, quick sort etc.
Greedy Algorithms: Elements of greedy strategy, Applications such as activity selection,
Huffman Coding, job sequencing, fractional knapsack problem, etc.
Dynamic Programming: Elements of dynamic programming, Memorization and
tabulation approaches, Applications such as matrix multiplication, 0/1 knapsack, Longest
common subsequence, Optimal binary search tree, etc.
Backtracking:Introduction, Applications such as N queen problem, sum of subsets, graph
coloring, etc.
Branch and Bound Algorithm: General method, Applications such as0/1 knapsack
problem, Traveling salesperson problem etc.
Graphs & Algorithms: Introduction to graphs, Paths and Circuits, Euler Graphs,
Hamiltonian graphs,Cut-sets, Connectivity and Separability, Covering and Partitioning,
Strongly connected component, Topological sort, Max flow: Ford Fulkerson algorithm,
max flow- min cut.
String Matching Algorithms: Suffix arrays, Rabin-Karp, Knuth-MorrisPratt (KMP),
Boyer Moore algorithm.
Problem Classes: P, NP, NP-Hard and NP-complete, deterministic and non-deterministic
polynomial time algorithm approximation, Randomized algorithms.
Laboratory Work (if applicable): Implementation of various algorithmic techniques for
solving common computational/engineering problems.
Course Learning Objectives (CLO)
The students will be able to:
1. Analyse the complexity of algorithms and implement it in a specific scenario.
2. Apply common algorithmic techniques such as greedy, dynamic programming etc.
to standard computational problems
Page 42 of 55