Computer Science 211
Data Structures

Mount Holyoke College
Fall 2009



James D. Teresco, Clapp 226, (413) 538-3253
Electronic mail: jteresco AT contact method)
Class Web: [Link]
Class Hour: Monday/Wednesday 8:35-9:50, Kendade 203
Fourth Hour: Friday 9:00-9:50, Kendade 203
Office Hours: 10:00-11:00 M, 10:45-11:45 Tu, 2:00-3:00 W, 10:00-11:00 F, and by appointment
Teaching Assistants: Courtney Schirf and Tasnia Tahsin
Evening TA Hours: 7:00-9:00 M, 8:00-10:00 Tu, 8:00-10:00 W, 7:00-11:00 Th, Kendade 307


Everything on this syllabus is subject to change. Changes will be announced in class and updated in the online version of the syllabus.

Course Objectives

This course couples work on program design, analysis, and verification with an introduction to the study of data structures. Data structures capture common ways to store and manipulate data, and they are important in the construction of sophisticated computer programs.

Students will be expected to write Java programs, ranging from very short programs to more elaborate systems. Since one of the goals of this course is to teach you how to write large, reliable programs composed from reusable pieces, we will be emphasizing the development of clear, modular programs that are easy to read, debug, verify, analyze, and modify.



The required text for the course is Java Structures: Data Structures in Java for the Principled Programmer, "Root 7" Edition. This is a free textbook authored and made available by Duane Bailey at Williams College. So there are no books to buy! You may print or view the text in Portable Document Format.


Students are expected to attend class and participate in discussions. Class meetings will consist of a mixture of discussions, demonstrations, and traditional lectures. Come to class prepared and on time. Assigned readings are listed on the lecture and reading schedule. Lectures will assume you are familiar with the material in the readings. Most lectures will include a small assignment due at the start of the next class. No late submissions of these assignments will be accepted, as they will often be discussed in class on the due date. The notes I use to guide my in-class presentations are available as PDF files linked from the lecture and reading schedule.

This course is scheduled for two regular weekly meetings, plus a "fourth hour" on Friday mornings. We will often use the fourth hour to continue discussion of the topics of the week and to get you started on the week's lab programming assignment.


While we do not have scheduled "lab meetings," most of your work outside class is done in the computer lab, hence the term "lab assignments" for the majority of your programming assignments. Lab assignments will be made weekly and each will include assigned readings and a written and/or programming component. The number of points available will vary with the complexity of the assignment. You may develop your programs using any computers you wish (computers in the lab, your own computer, etc.) but grading will be done using the Mount Holyoke Computer Science systems unless otherwise specified. It is your responsibility to ensure that your program works on the grading platform. Programming assignments will be graded on design, documentation, style, correctness, and efficiency.

Unless otherwise specified, late work may be turned in with a penalty computed as 1.08h%, where h is the number of hours late. Extensions will only be granted in serious situations and requests must be accompanied by appropriate written documentation (e.g., from the office of the Dean of the College). You can find a Java program that prints out a table of the late penalties here. Work turned in after solutions have been made available cannot receive credit. All assignments and projects are to be submitted electronically unless otherwise specified. Please submit plain text where appropriate and PDF otherwise. Please avoid other formats such as Word documents. If in doubt about a file format, please check with me first. Keep a copy of all submissions for yourself.


There will be two exams during the semester, plus one during finals period. Details to come.


Grades for individual assignments and exams are not scaled. Any scaling deemed appropriate will take place at the end of the semester by adjusting the above thresholds. The following thresholds may be adjusted downward (thereby raising grades) but will never be adjusted upward.


Lecture Assignments 10% A >= 93% A- >= 90%
Labs 40% B+ >= 87% B >= 83% B- >= 80%
Exam 1 15% C+ >= 77% C >= 73% C- >= 70%
Exam 2 15% D+ >= 67% D >= 63% D- >= 60%
Final Exam 20% F < 60%

Honor Code

Discussion with your classmates of the concepts related to course assignments and exams is an important ingredient in a lively and productive learning environment. However, work submitted for grading must be your own (or the combined work of group members, in the case of group assignments). Any unauthorized copying or collaboration is a violation of the Honor Code.

Academic dishonesty cases are unpleasant and uncomfortable for everyone involved. Penalties for such violations include failure of at least the assignment in question. A written report will be made to the dean of the College, as required by the Student Handbook. If there is any doubt about the degree of collaboration allowed or the permitted sources for a particular assignment, please ask for clarification before collaborating or consulting the source. Any such collaborations or sources must be cited properly.