As mentioned above, the second edition of this book is intended primarily as a textbook for a Freshman-Sophomore Data Structures (CS2) course. This book contains many Java-code and pseudo-code fragments, and over five hundred exercises, which are divided with roughly 40% being reinforcement exercises, 40% being creativity exercises, and 20% being projects.

This book is also structured to allow the instructor a great deal of freedom in how to organize and present the material. For example, we include in several chapters optional material that is somewhat mathematically more advanced. Such optional sections are indicated with a star (*). In the table below, we illustrate some possible uses of this book for an intermediate-paced CS2 course.

Chapter |
Possible Options |
---|---|

1. Java Programming | skip if students know it already |

2. Object-Oriented Design | skip if students know it already |

3. Analysis Techniques | omit justification methods |

4. Stacks, Queues & Deques | provide alternate case study |

5. Vectors, Lists, and Sequences | omit amortized analysis |

6. Trees | visit the tree drawing applet |

7. Priority Queues | omit bottom-up heap construction, locators |

8. Dictionaries | omit skip lists, locators |

9. Search Trees | omit (2,4) and red-black trees |

10. Sorting, Sets, and Selection | omit sorting lower bound |

11. Text Processing | omit tries, compression, & LCS |

12. Graphs | omit directed graphs |