Data Structures and Algorithms with Object-Oriented Design Patterns in Python
next up previous index

Suggested Course Outline

This text may be used in either a one semester or a two semester course. The course which I teach at Waterloo is a one-semester course that comprises 36 lecture hours on the following topics:

  1. Review of the fundamentals of programming in Python and an overview of object-oriented programming with Python. (Appendix gif). [4 lecture hours].
  2. Models of the computer, algorithm analysis, and asymptotic notation (Chapters gif and gif). [4 lecture hours].
  3. Foundational data structures, abstraction, and abstract data types (Chapters gif and gif). [4 lecture hours].
  4. Stacks, queues, ordered lists, and sorted lists (Chapters gif and gif). [3 lecture hours].
  5. Hashing, hash tables, and scatter tables (Chapter gif). [3 lecture hours].
  6. Trees and search trees (Chapters gif and gif). [6 lecture hours].
  7. Heaps and priority queues (Chapter gif). [3 lecture hours].
  8. Algorithm design techniques (Chapter gif). [3 lecture hours].
  9. Sorting algorithms and sorters (Chapter gif). [3 lecture hours].
  10. Graphs and graph algorithms (Chapter gif). [3 lecture hours].

Depending on the background of students, a course instructor may find it necessary to review features of the Python language. For example, students need to understand how the Python for statement makes use of programmer-defined iterators. Similarly, an understanding of the workings of Python new-style classes, inheritance, and descriptors such as property and staticmethod, is required in order to understand the unifying class hierarchy discussed in Chapter gif.


next up previous index

Bruno Copyright © 2003, 2004 by Bruno R. Preiss, P.Eng. All rights reserved.