Pre-requisites : CS101 or equivalent

Syllabus :
Performance of algorithms: space and time complexity, asymptotics; FundamentalData 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 datastructures: skip lists.

Texts :
1. T. H. Cormen, C. E. Leiserson, R L Rivest and C Stein,Introduction to Algorithms, MIT Press, 2001.<br />2. M. A. Weiss, Data Structures and Problem Solving Using Java, Addison-Wesley, 1997.

References :
1. A. M .Tannenbaum, Y Langsam and M J Augenstein, Data Structures Using C++, Prentice Hall India, 1996.<br />2. .A .H. Aho, J. E. Hopcroft and J. Ullman, Data Structures and Algorithms, Addison-Wesley, 1987. <br />3. .R. Sedgewick, Algorithms in C++ Parts 1-4, 3rd Ed., Pearson Education, 1998.<br />4..R. Sedgewick, Algorithms in C++ Part 5, 3rd Edn., Pearson Education, 2002.