Textbook in PDF format
This 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 introduced, demonstrating what can and cannot be computed efficiently at scale, helping programmers make informed judgements about the algorithms they use. The easy-to-read text assumes some basic experience in computer programming and familiarity in an object-oriented language, but not necessarily with Python. Topics and features: Includes introductory and advanced data structures and algorithms topics, with suggested chapter sequences for those respective courses. Provides learning goals, review questions, and programming exercises in each chapter, as well as numerous examples. Presents a primer on Python for those coming from a different language background. Adds a new chapter on multiprocessing with Python using the DragonHPC multinode implementation of multiprocessing (includes a tutorial). Reviews the use of hashing in sets and maps, and examines binary search trees, tree traversals, and select graph algorithms. Offers downloadable programs and supplementary files at an associated website to help students. Students of computer science will find this clear and concise textbook invaluable for undergraduate courses on data structures and algorithms, at both introductory and advanced levels. The book is also suitable as a refresher guide for computer programmers starting new jobs working with Python