Data Structures and Algorithms


As a subject, Data Structures and Algorithms has always fascinated me and it was a pleasure teaching this course to the Master's students at the Indian Institute of Science for six times in the last seven years. While teaching this course, I had prepared some notes, designed some programming assignments, and compiled what I thought were interesting problems. In April-95, Professor Srikant and I offered a course on Data Structures to the ITI engineers and followed it up with a more intensive AICTE-sponsored course on Object Oriented Programming and Data Structures in November-95. On both these occasions, I had prepared some lecture notes and course material. There was then a desire to put together a complete set of notes and I even toyed with the idea of writing the ideal book on DSA for Indian university students (later abandoned). Finally, encouraged by Professor Mrutyunjaya, past Chairman, CCE, Professor Pandyan, current Chairman-CCE, and Prof. K.R. Ramakrishnan (QIP co-ordinator, CCE), and supported by some CCE funding, I embarked on the project of preparing a Web-enabled Lecture Notes.

At the outset, let me say this does not pretend to be a textbook on the subject, though it does have some ingredients like examples, problems, proofs, programming assignments, etc. The lecture notes offers an adequate exposure at theoretical and practical level to important data structures and algorithms. It is safe to say the level of contents will lie somewhere between an undergraduate course in Data Structures and a graduate course in Algorithms. Since I have taught these topics to M.E. students with a non-CS background, I believe the lecture notes is at that level. By implication, this lecture notes will be suitable for second year or third year B.E./B. Tech students of Computer Science and for second year M.C.A. students. It is also useful to working software professionals and serious programmers to gain a sound understanding of commonly used data structures and algorithm design techniques. Familiarity with C programming is assumed from all readers.

Outline Acknowledgements Contents