Bryn Mawr College
CS 206: Data Structures
Fall 2011 - Section 001

Syllabus and Schedule Course Information Text and Software
Course Policies
Reference Links

Syllabus and Schedule

This is a tentative syllabus and schedule.  Topics, reading assignments, and due dates are subject to change.
All assignments and projects are due by 11:59:59pm on the day listed; except for the last project, which is due by 2:40pm on the last day of class.
Java readings are from Head First Java; if you are using a different Java reference it is your responsibility to determine the equivalent readings for the listed topics.

Wk Date Topic Reading Assignments Comments                 
1 8/29 Course Introduction
Java Intensive:  variables, control structures, strings, creating and compiling programs
Java: Ch. 1-3, pg 151, 669
Assignment 0 out (ungraded)

Java Intensive:  functions, classes, arrays, input/output
Java:  Ch. 4-5, pg 670
Assignment 1 out Code Formatting Standards
Grading Policy
Getting Started with Java Development
Assignment Submission Instructions
Labor Day - NO CLASS

Object Oriented Design in Java:  objects, constructors, static methods
Lafore: pg 9-30
Assignment 1 part A due Additional resources:
Java: Ch. 7-8, pg 667-668
3 9/12
Object Oriented Design in Java (continued):
inheritance, abstract classes, interfaces  
Lafore: pg 33-55

Additional resources:
Java: Ch. 9-10, pg 671-673

4 9/19
Introduction to Complexity Analysis
Lafore: pg 62-64, 70-72
Assignment 1 part B due
Assignment 2 out

List ADT Lafore: pg 115-142 Assignment 1 part B due Notes on Java Generics
5 9/26
Linked Lists, Stacks and Queues Lafore: pg 179-245


6 10/3
Lafore: pg 365-415

Assignment 2 due

7 10/10
Fall Break - NO CLASS

8 10/17
Exam 1

Project 1 out

Binary Search Trees

9 10/24
Balanced Search Trees Lafore: pg 429-460


10 10/31
Priority Queues and Heaps Lafore: pg 143-149, 579-601
Project 1 due
Project 2 out


11 11/7
Dictionaries and Hashing Lafore: pg 519-541, 552-574


12 11/14
Graphs and Graph Search Lafore: pg 615-649
Project 2 due
Project 3 out


13 11/21
Interface Design and Implementation
Java: Ch. 12-13

Project 4 out

Sorting and Searching Lafore: pg 268-294
Lafore: pg 325-357
Project 3 due


Catch-up / Review

Project 4 and final integration due by start of class
(no late submissions)

Final Exam

General Information

Instructor: Eric Eaton, Ph.D.
E-Mail: (When you e-mail me, make sure you put "CS206" at the start of the subject line to ensure a quicker response.)

E-mail is the best way to reach me, and I make a concerted effort to respond to all e-mails within 24 hours on weekdays and 48 hours on weekends (often, much less!).

Office Hours:
1-2pm Monday/Thursday and by appointment

Monday/Wednesday 2:30 pm to 4:00 pm
Room: Park 337
Lab: Wednesdays/Thursdays 10am-12pm in Park Room 231 (Computer Science Lab).

Course Description: This course will introduce fundamental algorithms and data structures of computer science: sorting, searching, recursion, backtracking search, lists, stacks, queues, trees, graphs, and dictionaries.  It will also introduce students to the mathematical analysis of algorithms, and provide extensive programming experience in the Java language.  This is the second core computer science course at Bryn Mawr.

Prerequisite: Computer Science 205 or 110, or permission of instructor.

Text & Software


Data Structures and Algorithms in Java (2nd edition) by Robert Lafore, Sams, 2002. Available at the Campus Bookstore.


Head First Java (2nd edition) by Sierra, Bates, and Bates, O'Reilly, 2005.  Available at the Campus Bookstore.

The Java Tutorial (4th edition) by Zakhour et al., Sun Microsystems, 2006.  Available for free at

Java in a Nutshell (5th edition) by David Flanagan, O'Reilly, 2005.  This is an excellent reference, especially for the Java API, but moves very quickly over the basics.

Thinking in Java (4th edition) by Bruce Eckel, Prentice Hall.  The first part of the 4th edition and all of the 3rd edition are available for free at

I would strongly recommend that you use Head First Java as your primary reference in this course, using the online version of The Java Tutorial as needed.


This software is already installed in the Computer Science Lab, but you are welcome to install the SDK on your own machines as well.

This is already installed in the Computer Science lab, and is available for free for your own computer.

We won't be using the Eclipse IDE until later in the semester, but it too is available for free.  If you install it on your machine, I recommend the "Eclipse IDE for Java Developers" version.  Be sure to install the Java SDK first, however.

Course Policies


Attendance and active participation are expected in every class. Participation includes asking questions, contributing answers, proposing ideas, and providing constructive comments.

As you will discover, I am a proponent of two-way communication and I welcome feedback during the semester about the course. I am available to answer student questions, listen to concerns, and talk about any course-related topic (or otherwise!). Come to office hours! This helps me get to know you. You are welcome to stop by and chat. There are many more exciting topics to talk about that we won't have time to cover in-class.

Whenever you e-mail me, be sure to use a meaningful subject line and include the phrase "CS206" at the beginning of that line. Your e-mail will catch my attention and I will respond quicker if you do this. I make an effort to respond to e-mails within 24 hours on weekdays and 48 hours on weekends.

Although computer science work can be intense and solitary, please stay in touch with me, particularly if you feel stuck on a topic or project and can't figure out how to proceed. Often a quick e-mail, phone call or face-to-face conference can reveal solutions to problems and generate renewed creative and scholarly energy. It is essential that you begin assignments and projects early, since we will be covering a variety of challenging topics in this course.


Your grade will be based upon two homework assignments, a four-part project, and two exams.  Assignments must be submitted according to the Assignment Submission instructions.  You should pay careful attention to the Code Formatting Standards and Grading Policy when doing your assignments.  The grading structure for individual assignments is broken down in the Grading Policy.

At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:

Exam 1: 15%
Exam 2: 20%
Assignments: 20% (10% each)
45% (10% each part, plus 5% for integration and delivery)
Total: 100%

Incomplete grades will be given only for verifiable medical illness or other such dire circumstances.

All graded work will receive a percentage grade between 0% and 100%.  Here is how the percentage grades will map to final letter grades:

Rounded Percentage
Letter grade

Rounded Percentage Letter grade
97% -100%
A+ (4.0)
77% - 79% C+ (2.3)
93% - 96% A (4.0) 73% - 76% C (2.0)
90% - 92% A- (3.7) 70% - 72% C- (1.7)
87% - 89% B+ (3.3) 67% - 69% D+ (1.3)
83% - 86% B (3.0) 60% - 66% D (1.0)
80% - 82% B- (2.7) 0% - 59% F (0.0)

The instructor reserves the right to adjust the percentage ranges for each letter grade upward in your favor.

Submission and Late Policy

All work must be turned in either in hard-copy or electronic submission, depending on the instructions given in the assignment.  E-mailed submissions will not be accepted.  Extensions will be given only in the case of verifiable medical excuses or other such dire circumstances, if requested in advance.

Late submissions will receive a penalty of 10% for every 0-24 hours it is past the due date and time (e.g., assignments turned in 25 hrs late will receive a penalty of 20%).  Submissions received more than one week late will not be accepted.  Project 4 and the final project integration will not be accepted late.


There will be two exams in this course.  The exams will be closed-book and closed-notes.  They will cover material from lectures, homeworks, and assigned readings (including topics not discussed in class).  So, keep up with those readings!

Study Groups

I want to encourage you to discuss the material and work together to understand it. Here are my thoughts on collaborating with other students:

If you have any questions as to what types of collaborations are allowed, please feel free to ask.

Reference Links

These references will be useful throughout the semester: