Department of Computer Science
CS 210 - Data Structures

Spring 1998 Syllabus

COURSE OBJECTIVES:
Solving complex computational problems requires the use of appropriate data structures, such as stacks, priority queues, search trees, dictionaries, hash tables, and graphs. It also requires the ability to measure the efficiency, or "complexity" of operations like sorting and searching, in order to make effective choices among alternative solutions. This course is a study of data structures -- their design, implementation, and effective use in solving computational problems. Laboratory exercises in C++ will provide an opportunity to study the characteristics of these data structures directly.
TEXTS (required):
Mark Allen Weiss, Algorithms, Data Structures, and Problem Solving with C++, Addison Wesley, 1996, and on-line handouts
INSTRUCTOR:
Allen Tucker, 211 Adams Hall
Email address: allen@polar.bowdoin.edu
Web address: http://www.bowdoin.edu/~allen
Office Hours: MTTh 3:30-5:00, or by arrangement
MEETING TIMES:
Class meeting: TTh 12:30-2:00 - Adams 106
Lab meeting: W 2:00-3:15 - Adams 208, and an alternative lab time to be determined
COURSE OUTLINE:
Week of Topics Readings Work Due
Jan 19 Transition to C++: pointers, arrays, and structures Chapter 1, Appx A, B, C
Jan 26 Objects and classes Chapter 2 Lab 1
Feb 2 Templates: the Vector class, inheritance Chapters 3, 4 Lab 2
Feb 9 Formal methods: O notation and complexity analysis Chapter 5 Lab 3
Feb 16 Overview of data structures; stacks, queues, trees, hash tables Chapter 6 Lab 4
Feb 23 *** test 1 ***
Mar 2 Induction and recursion Chapter 7 Lab 5
Mar 9 Sorting algorithms: mergesort, quicksort Chapter 8 Lab 6
Mar 16-23 *** Spring break ***
Mar 30 Random number generation, simulation Chapters 9, 13 Lab 7
Apr 6 Application: stacks and compilers Chapter 11
Apr 13 *** test #2 ***
Apr 20 Application: Index generation and binary trees Chapter 12 Lab 8
Apr 27 Implementation: balanced binary search trees Chapter 18 Lab 9
May 4
(1/2 week)
Implementation: hash tables Chapter 19
May 13 *** final project presentations (2:00pm) ***

WORK FOR THE COURSE: The work for this course includes class participation, readings, two tests, 10 weekly lab assignments, and a final project. Lab assignments can be downloaded directly from this Web page on the Monday of the week when it is assigned. All work will be graded and will contribute to your course grade. Attendance is required for all scheduled classes and lab meetings.

Lab work may be done either individually or in teams of two (your choice), but written lab exercises should be completed individually. Each lab assignment should be turned in on the Monday following the week it is assigned. Students are expected to follow Bowdoin's Computer Use Policy and its Academic Honor Code.

The final project will provide an opportunity to design and implement a complex piece of software for a real-world problem, using the data structures and concepts that you have learned throughout the course.