Courses with significant overlap with this course:
Semester of last offering:
Date of approval: dd-mmm-yyyy
Prerequisites:
Course Contents
Random access machine model, concept of problem size, and asymptotic behavior of time/space complexity.
Estimation of time/space complexity by smooth functions and order notations.
A simple example of worst case time/space complexity analysis.
Elementary data structures: arrays, lists, queues, stacks and their applications.
Binary search algorithm, binary trees, binary search tree data structure.
Balanced binary search tree: Red Black trees.
Hashing for insert, search, delete.
Heap data structure.
Efficient data structures, apart from those in items 6, 7, and 8, for sets with the foHowing group of operations: (i) insert, delete, membership, (ii) insert, delete, minimum, (iii) union, intersection, deference, (iv) disjoint set union, nd.
Sorting algorithms, including the average case analysis of quick sort.
Greedy paradigm with examples.
Divide and conquer paradigm with examples.
Dynamic programming paradigm with examples.
Definition of graphs, paths, trees, cycles. Data structures for graphs: adjacency lists, adjacency matrix
Graph algorithms: Depth First Search, Breadth First Search, Minimum Spanning Tree. Additional topics based on time and interest may be selected from the following list:
Single source shortest path computation, topological sorting of a partially ordered set, convex hull computation, string matching algorithms, median computation, distributed algorithms.