Pre-requisites : CS101
Syllabus : Performance of algorithms: space and time complexity, asymptotics; Fundamental Data structures: linked lists, arrays, matrices, stacks, queues, binary trees, tree traversals; Algorithms for sorting and searching: linear search, binary search, insertion-sort, selection sort, bubble-sort, quicksort, mergesort, heapsort, shellsort; Priority Queues: lists, heaps, binomial heaps, Fibonacci heaps; Graphs: representations, depth first search, breadth first search; Hashing: separate chaining, linear probing, quadratic probing; Search Trees: binary search trees, red-black trees, AVL trees, splay trees, B-trees; Strings: suffix arrays, tries; Randomized data structures: skip lists.
1. T H Cormen, C E Leiserson, R L Rivest and C Stein, Introduction to Algorithms, MIT Press, 2001.
2. M A Weiss, Data Structures and Problem Solving Using Java, Addison-Wesley, 1997.
1. A M Tannenbaum, Y Langsam and M J Augenstein, Data Structures Using C++, Prentice Hall India, 1996.
2. A H Aho, J E Hopcroft and J Ullman, Data Structures and Algorithms, Addison-Wesley, 1987.
3. Robert Sedgewick, Algorithms in C++ Parts 1-4, Pearson Education, Third Edition, 1998.
4. Robert Sedgewick, Algorithms in C++ Part 5, Pearson Education, Third Edition, 2002.