Data Structures and Algorithms
with Object-Oriented Design Patterns in C# |

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:

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

Depending on the background of students,
a course instructor may find it necessary to review
features of the C# language.
For example,
an understanding of *inner classes* is required
for the implementation of *enumerations*.
Similarly, students need to understand
the workings of *classes*, `interfaces`, and *inheritance*
in order to understand
the unifying class hierarchy discussed in Chapter .

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