Department of Computer Science
CS 210 - Data Structures

Winter 2001 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 Java will provide an opportunity to study the characteristics of these data structures directly.
TEXTS (required):
Sahni, Sartaj, Data Structures, Algorithms, and Applications in Java., McGraw-Hill, 2000, Programming with Java. McGraw-Hill, 1999 (optional), and on-line handouts
INSTRUCTOR:
Eric Chown, 219 Searles Science Building
Email address: echown@bowdoin.edu
Web address: http://www.bowdoin.edu/~echown
Office Hours: M, W 2:30-4:00 or by arrangement
MEETING TIMES:
Class meeting: MW 1:00-2:30 - Searles 126
Lab meeting: T 2:30-3:55 - Searles Mac Lab
COURSE OUTLINE:
Week of Topics Readings Work Due
Jan 22 Transition to Java: Object oriented programming.
Jan 29 Object Oriented Programming (cont.) Chapter 1 Lab 1
Feb 5 Vectors, Recursion Chapters 2, 3 Lab 2
Feb 12 Program Performance Chapter 2 Lab 3
Feb 19 Data Structures: Lists Chapter 4 Lab 4
Feb 26 Sorting Misc. Lab 5
March 5 Arrays and Matrices Chapter 6 Lab 6
March 12 **** Test 1 **** Lab 7
April 2 Stacks and Queues Chapter 9, 10
April 9 Hashing Chapter 11 Lab 8
April 16 Trees Chapter 12
April 23 Advanced Trees (continued) Chapter 16 Lab 9
April 30 Lab time
May 7 **** Test 2 **** Lab 10

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 will normally be done individually or, in some cases, in teams of two (your choice), but written lab exercises should be completed individually. Each lab assignment should be turned in on the Tuesday following the week it is assigned no later than the start of Tuesday's class. 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.

You are encouraged to discuss ideas and techniques broadly with other class members, but not specifics of assigned problems except as part of group projects. Discussions should be limited to questions that can be asked and answered without using any written medium (e.g. pencil and paper or email). This means that at no time should a student read any code written by another student unless they are part of the same group. Sharing of code or intermediate designs is expressly prohibited. Violation of this policy is grounds for me to initiate an action that would be filed with the Dean's office and would come before the J Board. If you have any questions about this policy, PLEASE do not hesitate to contact me. This will be a zero-tolerance policy.

It is permissible to use software and materials available from other sources (understanding that you get no credit for using the work of others on those parts of your projects) as long as: 1) You acknowledge explicitly which aspects of your assignment were taken from other sources and what those sources are. 2) The materials are freely and legally available. 3) The material was not created by a student at Bowdoin as part of this course this year or in prior years.

All write-ups, reviews, documentation, and other written material must be original and may not be derived from other sources.

Late Policy

To be considered on time, assignments must be turned in at the specified time on the due date. Each student has a total of four late days that can be used throughout the semester. Thus, during the semester a student can turn in assignments so that the total number of days late does not exceed four without any penalty. For example, a student could turn in four different assignments, each one day late, or all assignments on time except one that is four days late. Saturday and Sunday count as a single day, so that if an assignment is due on Friday, but turned in on Monday, it is late by two days.

Once the number of late days exceeds a total of four, late assignments will be assessed a penalty of 10% of the assignment's available points per day. Since I provide the late days, I will not grant extensions.