[Bowdoin Computer Science]

CSci 210: Data Structures

Spring 2008

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

Syllabus & Labs | Students

Solving 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 work with and study the characteristics of these data structures directly. The course will begin with an fast-paced introduction to the Java programming language.

Prerequisites: Csci101 or permission of instructor.

Instructor: Laura Toma


Class Email: csci210 at bowdoin dot edu

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

Course Outline:
Week Topic Reading
Jan 22 Introduction Class website
Jan 22, 23, 24 Java basics Bailey 1
Jan 29, 30, 31 Java advanced programming Bailey 2
Febr 5, 6, 7 Program analysis Bailey 4.1
Febr 12, 13, 14 Vectors Bailey 3
Febr 19, 20 Exam1
Febr 26, 27, 28 Recursion Bailey 4.2
March 4, 5, 6 Lists Bailey 7, 8
-------------------------- -----------spring break------------- ----------------
March 25, 26, 27 Stacks and queues Bailey 9
April 1, 2, 3 Searching and backtracking. Breadth- and depth-first search.
April 8, 9, 10 Trees Bailey 11
April 15, 16, 17 Advanced trees Bailey 13
April 22, 23, 24 Maps and hash tables Bailey 14
April 29, 30, May 1, 6 Selected topics: heaps or graphs Bailey 12, 15
May 7 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.