Front Matter....2
1. Python Programming 101....23
2. Computational Complexity....77
3. Recursion....114
4. Sequences....152
5. Sets and Maps....223
6. Trees....257
7. Graphs....287
8. Membership Structures....316
9. Heaps....331
10. Balanced Binary Search Trees....362
11. B-Trees....400
12. Heuristic Search....430
13. Parallel Applications....456
14. Distributed Multiprocessing....470
15. Appendix A: Integer Operators....498
16. Appendix B: Float Operators....500
17. Appendix C: String Operators and Methods....502
18. Appendix D: List Operators and Methods....508
19. Appendix E: Dictionary Operators and Methods....511
20. Appendix F: Turtle Methods....514
21. Appendix G: TurtleScreen Methods....533
22. Appendix H: Complete Programs....545
Back Matter....557
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.
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.