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