Indian Institute of Information Technology, Sri City (IIITS)
Advanced Data Structures and Algorithms (ADSA)
A CSE Program Core Course (UG2)
Instructor: Dr. Shiv Ram Dubey
Fall 2019
Course Description: In this course, students deepen their knowledge of the design and analysis of computer algorithms. Advanced topics in algorithms and algorithm analysis covered in the course include balanced search trees, string matching and indexing, linear sorting, graphs and graph algorithms, dynamic programming, network flows, randomized algorithms, and NP-completeness.
Pre-requisite: C Programming, Data Structure and Algorithms
Course Outline (Topics): The following list of topics is tentative. Based on available time slots, some topics may be dropped or added or reordered.
Introduction:
Refresher: Abstract Data Types, Asymptotic Analysis, Stacks, Queues, Linked Lists, Trees, Searching and Sorting
Recurrence Relation: Recurrence Relation, Tree Method, Master Theorem, Substitution Method
Sorting: Radix and Bucket Sort
Balanced Search Trees: 2-3-4 Tree and Red Black Tree
String Matching and Indexing: Tries and Suffix Trees
Graph Algorithms:
Graphs: Graphs, Data Structures for Graphs
Breadth First Search: Breadth First Search, Applications of BFS
Depth First Search: Depth First Search, Applications of DFS
DFS in Directed Graphs, Applications of DFS in Directed Graphs,
Minimum Spanning Trees: Kruskal’s and Prim’s Algorithm
Shortest Paths: Single Source Shortest Paths- Dijkstra and Bellman Ford
All Pairs Shortest Paths- Floyd Warshall
Advanced algorithmic design techniques:
Dynamic Programming: Fibonacci Number, Bellman Ford, Floyd Warshall, Longest Common Subsequences, Knapsack, Independent Sets in Trees
Network Flows: Max flow, Min Cut and Applications
Randomized Algorithms: Introduction, Quicksort, Min Cut Problem - Karger and Karger-Stein Algorithms
NP-completeness: NP-completeness, Polytime reductions
Books/References:
Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein, Third Edition, The MIT Press
Algorithms Design by Jon Kleinberg and Eva Tardos
Data Structures and Algorithm Analysis in C. Second Edition. - Mark Allen Weiss (DSAC)
Data structures and network algorithms, Robert Endre Tarjan, Society for Industrial and Applied Mathematics Philadelphia, PA, USA, 1983, ISBN:0-89871-187-8
Knapsack Problems - Algorithms and Computer Implementations, Silvano Martello and Paolo Toth, John Wiley & Sons, West Sussex, UK, 1990, ISBN: 0471924202
Evaluation Policy: Assignments should include explanatory/clear comments as well as a short report describing the approach, detailed analysis, and discussion/conclusion. It is expected to come up with most efficient answer in all assignments and exams.
15% Mid-Exam-1 15% Mid-Exam-2 30% End-Exam 20% Lab Exams 10% Quiz 10% Home Works
Course Ethics: Please note down the following activities leading to a fair academic honesty:
All class work is to be done independently.
It is best to try to solve problems on your own, since problem solving is an important component of the course, and exam problems are often based on the outcome of the assignment problems.
You are allowed to discuss class material, assignment problems, and general solution strategies with your classmates. But, when it comes to formulating or writing solutions or writing codes, you must work alone.
You are not allowed to take the codes from any source, including online, books, your classmate, etc. in the home works and exams.
You may use free and publicly available sources (at idea level only), such as books, journal and conference publications, and web pages, as research material for your answers. (You will not lose marks for using external sources.)
You may not use any paid service and you must clearly and explicitly cite all outside sources and materials that you made use of.
I consider the use of uncited external sources as portraying someone else's work as your own, and as such it is a violation of the Institute's policies on academic dishonesty.
Instances will be dealt with harshly and typically result in a failing course grade.
Cheating cases will attract severe penalties.
Lectures
Lecture 1: Introduction - 31/July/2019
Lecture 2: Insertion Sort, Proof by Induction, Divide and Conquer, Merge Sort - 05/Aug/2019
Lecture 3: Asymptotic Analysis - 07/Aug/2019
Lecture 4: Recurrence Relations, Tree Method, Master Theorem - 08/Aug/2019
Lecture 5: Substitution Method for Recurrence Relations, Proof by Induction - 09/Aug/2019
Lecture 6: Quick Sort and Randomized Quick Sort, Heap Sort, BST Sort (On Board) (Quick Sort Reference Slide) - 14/Aug/2019
Lecture 7: Radix and Bucket Sort, Comparison-based Sorting Lower Bound - 16/Aug/2019
Lecture 8: Binary Search Tree - 19/Aug/2019
Lecture 9: 2-4 Tree - 21/Aug/2019
Lecture 10: Red Black Tree - 23/Aug/2019
Lecture 11: Red Black Tree - Insertion - 26/Aug/2019
Lecture 12: Red Black Tree - Deletion (On Board) - 27/Aug/2019
Lecture 13: Tries and Suffix Tree - 30/Aug/2019
Lecture 14: Tries and Suffix Tree - 03/Sept/2019
Lecture 15: Recap - 06/Sept/2019
Lecture 16: Graphs (Other topics on Board) - 16/Sept/2019
Lecture 17: Data Structures for Graph - 17/Sept/2019
Lecture 18: Depth First Search in Undirected Graph (Other topics on Board) - 18/Sept/2019
Lecture 19: Depth First Search in Directed Graph - 23/Sept/2019
Lecture 20: Applications of DFS in Undirected Graph - 24/Sept/2019
Lecture 21: Applications of DFS in Directed Graph - 27/Sept/2019
Lecture 22: Breadth First Search and Applications (Other Topics on Board) - 30/Sept/2019
Lecture 23: Minimum Spanning Tree - 01/Oct/2019
Lecture 24: Kruskal's Algo - 01/Oct/2019
Lecture 25: Prim's Algo - 04/Oct/2019
Lecture 26: Recap (MST) - 14/Oct/2019
Lecture 27: Dijkstra's Single Source Shortest Path Algo - 17/Oct/2019
Lecture 28: Correctness and Complexity of Dijkstra's Algo - 18/Oct/2019
Lecture 29: Bellman Ford's Single Source Shortest Path Algo - 28/Oct/2019
Lecture 30: Dynamic Programming and Floyd Warshall - 29/Oct/2019
Lecture 31: DP Longest Common Subsequences - 01/Nov/2019
Lecture 32: DP Knapsack - 04/Nov/2019
Lecture 33: DP Independent Sets In Trees - 05/Nov/2019
Lecture 34: Network Flow Algorithms - 06/Nov/2019
Lecture 35: Network Flow Algorithms - 11/Nov/2019
Lecture 36: Min Cut and Randomized Algo - 12/Nov/2019
Lecture 37: Karger's Algo - 18/Nov/2019
Lecture 38: Karger-Stein Algo - 19/Nov/2019
Lecture 39: P, NP, NP-hard, NP-Complete - 22/Nov/2019