Princeton University
Computer Science Department

Computer Science 226
Algorithms and Data Structures

Rob Schapire

Spring 2005

General Information | Schedule & Readings | Assignments | Whiteboard

Midterm exam information.

Final exam information.

Course Summary

This course surveys some of the most fundamental algorithms and data structures in use on computers today, including algorithms for sorting and searching, as well as geometric and graph algorithms.  The course will concentrate on understanding properties of algorithms, developing implementations, and estimating their potential effectiveness in applications.

For a more detailed idea of what to expect, see the COS226 website for fall'04, spring'04 or fall'03 (although some of the material and assignments will be different this semester).

Administrative Information


MW, 11-12:20, 105 CS Building


Tuesday afternoons for 50 minutes in Friend 009.  See precept assignments below.  The first precept is February 8.


Rob Schapire: 407 CS Building, x8-7726, schapire@cs
Office hours: Wed. 2:30-3:30, or by appointment (via email), or just stop by.


Eddie Chlamtac: 103c CS Building, x8-0419, chlamtac@cs
Office hours: Fri. 3-4

Shirley Gaw: 317 CS Building, x8-1796, sgaw@cs
Office hours: Thurs. 11-12

Mark McCann: 317 CS Building, x8-1796, mmccann@cs
Office hours: Wed. 10-11

Note: you can come to the office hours of any preceptor, not just your own.

Undergraduate Coordinator: 

Tina McCoy: 410 CS Building, x8-1746, tmmccoy@cs



COS 126 or COS 217 or permission of instructor.  In all cases, the ability to program in Java is required.


Algorithms in Java, Parts 1-4
by Robert Sedgewick
Third edition
Addison-Wesley, 2003.
On-line edition.

Algorithms in Java, Part 5
by Robert Sedgewick
Third edition
Addison-Wesley, 2004.
On-line edition.

These are available from the U-store, but may be cheaper elsewhere.  A copy has also been requested for reserve at the engineering library.

For additional reading, you may also find the following book helpful:

Introduction to Algorithms
by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
Second edition
McGraw-Hill, 2001.
On-line edition.


Precepts meet on Tuesday afternoons, beginning February 8.  At precepts, the preceptors will answer questions about the lectures, discuss previous assignments, and give details and answer questions about the new assignment.  It is possible that some new material will be presented.  The precept schedule will be as follows:

# Time Room Preceptor
1 T 12:30 Friend 009 Mark McCann
2 T 1:30 Friend 009 Shirley Gaw
3 T 3:30 Friend 009 Eddie Chlamtac

Precept assignments are available here or from whiteboard.  Room locations will be announced shortly.

Grading, exams and workload

Regular homework assignments will be given roughly once a week.  Most or all of these will include a programming component, as well as short written exercises.  A small number of assignments may consistent only of written problems and exercises.  There will be a final exam and one midterm given in class the Wednesday after break (March 23).  In principle, anything covered in lecture or in the required readings is "fair game" for the exams.  However, realistically, you can expect that the emphasis will be placed on those same topics that were emphasized in lecture and on the homeworks.  The final exam is comprehensive, although it will stress material covered since the midterm.  Some exams from previous years are available here.

The assignments will be worth roughly 60% of your grade, and the exams will be worth roughly 40%.  Final grades may be adjusted slightly upward for regular and positive class and precept participation.  Failure to complete any significant component of the course may result in a grade of D or F, regardless of performance on the other components.

Be sure to see the Assignments page for important information on the late policy and collaboration policy.

Computers and Lab TA's

You may develop your programs on any machine you like.  Instructions on how to get started with Java are available from the COS126 website here.

The Princeton computer science department hires undergraduate lab assistants who are available to answer general computing questions in the labs M-F 7:30-10:30pm and Sunday 6-9pm in Friend 006/007 beginning the second week of classes.  An updated schedule will soon be available here.  These lab assistants should only be asked computer-related questions (e.g., Unix, Java), not questions regarding course material or assignments.  They can also assist you in debugging your code, assuming you have first made a reasonable effort to identify the bug and isolate the problem.  If you have questions regarding the course material or assignments, see me or your preceptor.


As soon as possible, please join the course mailing list by visiting and following the instructions for subscribing.  This list will be used by the course staff for general announcements, such as last minute corrections to the homeworks, changes in due date, etc.


Many thanks to my predecessors at Princeton who developed most of the material used in this course.  Some of this material may be protected by copyright.  See last fall's website for more information.