[Bowdoin Computer Science]

CSci 210: Data Structures

Fall 2007

Tue 11:30 - 12:55, Wed 2:30-3:55, Thu 11:30-12:55 in Searles 126/128

Syllabus & Labs | Links | Students

Solving complex computational problems requires the use of appropriate data structures, such as stacks, priority queues, trees, dictionaries, hash tables, and graphs. It also requires the ability to measure the efficiency, or "complexity" of the solution, in order to make effective choices among alternative solutions. This course is a study of fundamental data structures, their design, implementation, efficiency and effective use in solving problems. The in-class and laboratory exercises in Java will provide an opportunity to study the characteristics of these data structures directly. The course will begin with an intensive introduction to the Java programming language.

Prerequisites: CS101 or permission of instructor.

Instructor: Laura Toma


Class Email: csci210 at bowdoin dot edu

Class webpage: http://www.bowdoin.edu/~ltoma/teaching/cs210/fall07/

Course Outline:
Week Topic Reading
Aug 31 Introduction Class website
Sept 4, 5, 6 Java review Bailey 1
Sept 11, 12, 13 Advanced java programming Bailey 2
Sept 18, 19, 20 Program analysis Bailey 4.1
Sept 25, 26, 27 Vectors Bailey 3
Oct 2, 3, 4 Recursion Bailey 4.2
Oct 10 Exam1
Oct 16, 17, 18 Lists Bailey 7, 8
Oct 23, 24, 25 Stacks and queues Bailey 9
Oct 30, 31, Nov 1 Trees Bailey 11
Nov 6, 7, 8 Advanced trees Bailey 13
Nov 13, 14, 15 Hash tables Bailey 14
Nov 20, 27, 28 Heaps Bailey 12
Nov 29, Dec 4, 5 Graphs Bailey 15
Dec 6 Exam2


The textbook is not required. Copies of the book will be available in the CS lab (Searles 224). All the material required for class will be covered in class and the labs will be available online. Technically, the notes you take during class and the online Java documentation will be sufficient; however, you may find it helpful to own the book.

Work for the course and grading policy:
The work for this course includes class participation, readings, two tests, a number of weekly lab assignments (usually 9 or 10), in-class assignments, and a final project. Lab assignments will be available online. All work will be graded and will contribute to you course grade. As a rule, in-class assignments are simply checked for completeness and the labs are checked more thoroughly. Approximately 50% of your grade will be based on the exams. The rest will be based on lab and class performance.

Since the major goal of the class is to teach you programming, not handing in any lab is grounds for failing the course. This does not assume, however, that all labs need to be completed satisfactorily.

One of the goals of the class is to learn the difference between programs that simply work, and quality programs. Therefore do not assume that completing an assignment will result in an A program. We will discuss guidelines extensively in class.

Lab work will be done individually. Usually the labs will be assigned on Thursdays, and the Thursday class is dedicated to getting started on the lab. Each lab assignment will be due one week after it is assigned, that is, the following Thursday before class (unless otherwise specified in class). The lab assignment must be turned in electronically (by email), as well as hard-copy. Endorse each assignment with your signature to acknowledge that you have followed the honor code for the class.

Late policy:
The assignments must be turned in at the specified time. The reason is that it is absolutely essential that you do not fall behind in the class. Furthermore, once an assignment is due, I will no longer provide help on it. In addition, you may not work on late assignments during class time. The late penalty for an assignment is 25% per day. Failure to hand in an assignment is grounds for failing the course.

Honor code and cheating policy:
Students are expected to follow the Bowdoin Computer Use Policy and the Academic Honor Code. 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. The same rules apply once you have finished the course - sharing your code with other students will be considered a violation of Bowdoin's honor code. 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.

If in the future you will provide your work to students in 210 this will also constitute a violation of Bowdoin's honor code.