dc.description.abstract | This clearly structured and easy to read textbook explains the concepts and techniques required to write programs that can handle large amounts of data efficiently. Project-oriented and classroom-tested, the book presents a number of important algorithms supported by motivating examples that bring meaning to the problems faced by computer programmers. The idea of computational complexity is also introduced, demonstrating what can and cannot be computed efficiently so that the programmer can make informed judgements about the algorithms they use. The text assumes some basic experience in computer programming and familiarity in an object-oriented language, but not necessarily with Python. Topics and features: includes both introductory and advanced data structures and algorithms topics, with suggested chapter sequences for those respective courses provided in the preface; provides learning goals, review questions and programming exercises in each chapter, as well as numerous illustrative examples; offers downloadable programs and supplementary files at an associated website, with instructor materials available from the author; presents a primer on Python for those coming from a different language background; reviews the use of hashing in sets and maps, along with an examination of binary search trees and tree traversals, and material on depth first search of graphs; discusses topics suitable for an advanced course, such as membership structures, heaps, balanced binary search trees, B-trees and heuristic search. | |