Course Scope

The purpose of the course is two-fold. We will continue the study of data structures from CS 211 and we will learn how to approach larger and more challenging programming projects than those you did in CS 211. Programming is a significant part of this course and you should expect to spend a good deal of time on the course projects.

Prerequisites

The prerequisite for this course is C or better in CS 211.

I will assume that you have developed a significant degree of skill in programming (program organization, coding, documenting, testing and debugging) -- you will develop yet more this semester. I will also assume that you are acquainted with basic complexity analysis ("big O") and are able to build abstract data types using Java classes.

Required Textbook

The text is Mark Allen Weiss, Data Structures & Problem Solving Using Java, 4th ed, Addison-Wesley, 2010

List of Topics

Topics to be covered include:

  • Generic types
  • Linked lists
  • Stacks and queues
  • Binary trees
  • Balanced binary trees
  • Multi-way trees
  • B-trees and B+-trees
  • File organization
  • Searching and sorting
  • Set representations
  • Hashing
  • Graph

This list is subject to change as interest evolves.

Course outcome

The students will:

  • Reinforce what they have learned about elementary data structures from CS 211
  • Extend their knowledge of data structures to more sophisticated data structures. This includes balanced binary search trees, B-trees and B+-trees, hashing, and basic graphs.
  • Use generic types in their data structures.
  • Do more demanding programming than they had in CS 211. All programming is done in Java. This involves more program design and debugging techniques.