Description:Intended as a second course on programming with data structures, this book is based on the notion of an abstract data type which is defined as an abstract mathematical model with a defined set of operations. The specification of data types and their corresponding operations are presented in a form directly representable in a Pascal-like language. Part 1 begins by examining the time and space requirements of computer algorithms and develops a notation which is used in the remainder of the book to compare various implementations of abstract data types. Part 2 further describes many algorithms and common techniques for developing efficient algorithms using abstract data types. Programming paradigms such as divide and conquer, dynamic programming, graph searching, tabulation techniques and radomized algorithms are discussed.