Princeton University

Computer Science 226
Data Structures and Algorithms
Robert Sedgewick

Spring 1999

Computer Science Dept.

General Information | Announcements | Assignments | Collaboration Policy | Lectures | Errata

This course material has been prepared to supplement Algorithms in C by Robert Sedgewick. The schedule and some other information is specific to the spring 1999 offering of our algorithms course at Princeton, but much of the material may be useful to others taking and teaching similar courses.


Instructor: Robert Sedgewick, CS 319, 258-4345, rs@cs (Office hours M 12-2).

Course Manager: Michael Goldwasser, CS 204, 258-1749, wass@cs (Office hours T 11-1).

Course Secretary: Sandy Barbu, CS Bldg. 323, 258-4562, barbu@cs.

Lectures: MW 11:00-11:50 AM, Reynolds Auditorium (McDonnel A02).

Precepts: Monday or Tuesday, each lasts 50 minutes; all rooms and offices are in the CS Bldg.
First precepts 2/8 and 2/9.
Click on a precept number to get the list of students in that precept
Time Room Preceptor Office Phone Office Hours Email
1. M 3:30 102 Amal Ahmed 417 8-6324 M 4:30-5:30 amal@cs
2. M 3:30 105 Michael Goldwasser 204 8-1749 Tu 11-1 wass@cs
3. M 3:30 103 Jeffrey Korn 217 8-0451 F 1-2 jlk@cs
4. M 7:30 102 Wagner Toledo Corrêa 414 8-5388 W 7:30-8:30pm wtcorrea@cs
5. M 7:30 105 Ben Gum 313 8-6126 tba gum@cs
6. T 3:00 103 Michael Goldwasser 204 8-1749 Tu 11-1 wass@cs
Additional TAs:
Juan Chen 416 8-6304 M 1:30-2:30 juanchen@cs
Xiaohu Qie 315 8-1795 M 4:30-5:30 qiexh@cs

Lab TA coverage: Princeton has undergraduate lab assistants who are available to answer general computing questions in the labs and/or college clusters many days. These people should only be asked computer-related questions (e.g. unix, C, C++), not questions regarding course material or programming assignments. See the current schedule.

Text: The textbook is Algorithms, Third Edition, in C, Parts 1-4, Addison-Wesley, 1998. by Robert Sedgewick, ISBN 0-201-31452-5. Only the first half (Parts 1-4) of the new edition is currently available. You will get instructions on obtaining the second half of the text after the break.You also need the course packet, available at Pequod Copy. You may also find a book on C programming useful.

Prerequisites: The prerequisite for this course is COS 126. Students in the course should have an understanding of the basic principles of computer science and computer architecture, significant programming experience with a working knowledge of C and Unix (or some similar programming environment) and familiarity with elementary data structures such as arrays, stacks, queues, and trees. Most students registered for the course have this background; those who do not may have to work harder at the beginning.

The course will cover algorithms from a variety of applications areas, and several mathematical topics will be discussed. The course is intended to be self-contained with respect to such topics, but students are likely to find any mathematical experience helpful.

Attendance at lectures is expected. Copies of lecture notes (transparancies used in lecture) are in the course packet and are available online. Students are fully responsible for all material presented in lectures, even if some of it does not appear in these notes.

Assignments and Exams: There will be ten programming assignments. Generally, they will be handed out on a Wednesday, with electronic submission due eight days later on Thursday (at 11:59 PM). Your submission must include a readme file which should not only provide details about your program, but also exhibit your understanding of performance characteristics and the general approach that you took to solve the problem.

There will also be ten weekly problem sets. These will be handed out on Wednesdays and due at precept the following week. These will consist of short questions on the material in the lectures, notes, and programs.

There will be a midterm exam on the Wednesday before break, which will cover all material up to and including the lecture on the previous Wednesday. The final exam will cover all material in the course.

The programming assignments, problem sets, and exams all contribute significantly to your grade. Specifically, your final course grade will be calculated as follows:

In calculating your course grade, we will drop the lowest programming assignment score. Thus, you may choose to "punt" one programming assignment, or you may choose to do them all in an attempt to learn more or to maximize your grade. The precise values of these weights are not nearly as important to you as it is to be sure that you hand in all the work assigned. Doing so will help you if your grade is borderline at the end.

Keeping in Touch: The best way to contact the instructor, manager, or preceptors is by electronic mail. To get help, you should try sending mail to your preceptor first, but you can also try the instructor or cs226@phoenix.

Important note: Please do not publish solutions to problem sets, exercises, and exams in a way that could compromise their utility as pedagogical tools. At Princeton, this is a violation of the basic rights, rules and responsibilities of members of the university community.

All rights reserved. None of this material may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording or otherwise without prior written permission. Permission is granted to instructors who adopt Algorithms in C to use this supplemental material in conjunction with their course.

Copyright (c) 1999, Robert Sedgewick

Short history of credits: These course materials have been under development by R. Sedgewick since at least 1978. The index, course information and other .html files on this website were created by Ed Felten in 1993-95, adapting the course materials written by Sedgewick in 1991. The lecture notes and most assignments were rewritten by Sedgewick in 1996-1997 and are being further updated in 1998-1999. Problems in exams and problem sets are adapted from many sources, but primarily the new (third) edition of Algorithms in C.

cos226 Class Page
Last modified: February 27, 1999