Design and Analysis of Algorithms (DAA)
Unit I . Fundamentals (09 Hours)
The Role of Algorithms in Computing - What are algorithms, Algorithms as technology, Evolution of Algorithms, Design of Algorithm, Need of Correctness of Algorithm, Confirming correctness of Algorithm – sample examples, Iterative algorithm design issues.
Unit II. Models and Design (09 Hour)
Functional Model – Features, Recursive processes, Scope rules, Tail recursion, Checking correctness of Iterative process. Imperative Model – Basics, Specifications and Prototyping, Stepwise Refinement, Proof Rules – Basics, For loops, Goto and Exit loops, Functions and Procedures, Problem Solving using Greedy strategy - Knapsack problem, Huffman code generation algorithm.
Unit III . Abstract Algorithms (09 Hours)
Dynamic Programming, Divide and Conquer, Greedy strategy, Branch-n-Bound, Natural Algorithms –Evolutionary Algorithms and Evolutionary Computing, Introduction to Genetic Algorithm, Simulated Annealing, Artificial Neural Network and Tabu Search.
Unit IV . Complexity Theory (09 Hour)
Complexity theory – Counting Dominant operators, Growth rate, upper bounds, asymptotic growth, O, Ω, Ɵ, o and ω notations, polynomial and non-polynomial problems, deterministic and non-deterministic algorithms, P-class problems, NP-class of problems, Polynomial problem reduction NP complete problems- vertex cover and 3-SAT and NP hard problem – Hamiltonian cycle.
Unit V . Amortized Analysis (09 Hours)
Amortized Analysis – Binary, Binomial and Fibonacci heaps, Dijkstra’s Shortest path algorithm, Splay Trees, Time-Space trade-off, Introduction to Tractable and Non-tractable Problems, Introduction to Randomized and Approximate algorithms, Embedded Algorithms: Embedded system scheduling (power optimized scheduling algorithm), sorting algorithm for embedded systems.
Unit VI . Multi-threaded and Distributed Algorithms (09 Hours)
Multi-threaded Algorithms - Introduction, Performance measures, Analyzing multi-threaded algorithms, Parallel loops, Race conditions.Problem Solving using Multi-threaded Algorithms - Multi-threaded matrix multiplication, Multi-threaded merge sort.Distributed Algorithms - Introduction, Distributed breadth first search, Distributed Minimum Spanning Tree.String Matching- Introduction, The Naive string matching algorithm, The Rabin-Karp algorithm
Text Books:
1. Parag Himanshu Dave, Himanshu Bhalchandra Dave, “Design And Analysis of Algorithms”, Pearson Education, ISBN 81-7758-595-9
2. Gilles Brassard, Paul Bratley, “Fundamentals of Algorithmics”, PHI, ISBN 978-81-203- 1131-2
Reference Books:
1. Michael T. Goodrich, Roberto Tamassia , “Algorithm Design: Foundations, Analysis and Internet Examples”, Wiley, ISBN 978-81-265-0986-7
2. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein, “Introduction to Algorithms”, MIT Press; ISBN 978-0-262-03384-8
3. Horowitz and Sahani, "Fundamentals of Computer Algorithms", University Press, ISBN: 978 81 7371 6126, 81 7371 61262
4. Rajeev Motwani and Prabhakar Raghavan, “Randomized Algorithms”, Cambridge University Press, ISBN: 978-0-521-61390-3
5. Dan Gusfield, “Algorithms on Strings, Trees and Sequences”, Cambridge University Press,ISBN:0-521-67035-7