This is the homepage for CS 241: Data Structures, a course offered by Fritz Ruehr at the Computer Science Department of Willamette University.
The study of data structures and algorithms serves as a basic foundation to a Computer Science education. As a second course in programming, it enriches a student's understanding of the basic processes involved in computing. But it also begins to focus attention on deeper and more abiding issues. In this course, we shift our attention from simple coding techniques to the analysis of algorithms in terms of resource use (time and space), generic solutions to recurring problems and larger-scale program design. A good portion of our time will be spent becoming familiar with the discipline's standard repertoire of data structures and algorithms. In order to support larger-scale design, we will stress principles of abstraction and modularity. We will try to divide our programs into cleanly separated components, with narrow interfaces, and consider the specification of their behavior separate from its possible implementations. Through all of this, our programming vehicle will be the modern, object-oriented programming language Java. Students should come out of this course with a solid capability for programming and design and a good foundation for future study of Computer Science in general.
Write up the depth-first and breadth-first tree traversals from the on-line sample as
formal implementations of the Iterator class; see
this diagram explaining what to do.
This is the group design document for our term-long gaming project; see the various group's documents here:
Here are a few fun, interesting or otherwise difficult to categorize links that came up in lecture at various points.