Princeton University

Computer Science 226 Spring 2001

DATA STRUCTURES AND ALGORITHMS

Robert Sedgewick

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 2001 offering of our algorithms course at Princeton, but much of the material may be useful to others taking and teaching similar courses.



COURSE INFORMATION

Instructor: Robert Sedgewick, CS 319, 258-4345, rs@cs (Office hours MW 12 in Frist cafe).


Course Secretary: Mitra Kelly, CS Bldg. 323, 258-4562, mkelly@cs.


Lectures: MW 11:00-11:50 AM, Frist 302.


Precepts: Monday or Tuesday, each lasts 50 minutes; all rooms and offices are in the CS Bldg.
First precepts 2/12 and 2/13.
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 103 Ruoming Pang 313 8-6126 W 3-4 rpang@cs
2. M 7:30 103 Manoj Prabhakaran 223 8-0254 W 9-10 mp@cs
3A. T 3:30 302 Loukas Georgiadis 413 8-1797 T 10 lgeorgia@cs
3B. T 3:30 102 Iannis Tourlakis 417 8-6324 M 2 itourlak@cs
4. T 11 302 Bo Brinkman 004 8-1785 T 12:15 (Frist cafe) brinkman@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 volume (Parts 1-4) of the new edition is currently available. You will get instructions on obtaining the second volume of the text after the break. 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 are available for reference 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 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) 2001, 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. Some material was added by Michael Goldwasser in 1999. Further updates are being made in 2001. Problems in exams and problem sets are adapted from many sources, but primarily the new (third) edition of Algorithms in C.


cos226 Home Page
rs@cs.princeton.edu
Last modified: February 6, 2001