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 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. 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 from a different language background.
Table of Contents
Chapter 1 Python Programming 101
Chapter 2 Computational Complexity
Chapter 3 Recursion
Chapter 4 Sequences
Chapter 5 Sets and Maps
Chapter 6 Trees
Chapter 7 Graphs
Chapter 8 Membership Structures
Chapter 9 Heaps
Chapter 10 Balanced Binary Search Trees
Chapter 11 B-Trees
Chapter 12 Heuristic Search
Appendix A: Integer Operators
Appendix B: Float Operators
Appendix C: String Operators and Methods
Appendix D: List Operators and Methods
Appendix E: Dictionary Operators and Methods
Appendix F: Turtle Methods
Appendix H: Complete Programs
1