Computer Science 226
Algorithms and Data Structures
Spring 2010


Course Information | Assignments | Exercises | Lectures | Exams | Booksite

COURSE INFORMATION

Description.   This course surveys the most important algorithms and data structures in use on computers today. Particular emphasis is given to algorithms for sorting, searching, and string processing. Fundamental algorithms in a number of other areas are covered as well, including geometric and graph algorithms. The course will concentrate on developing implementations, understanding their performance characteristics, and estimating their potential effectiveness in applications.

Prerequisites.   COS 126 or COS 217 or permission of instructor.

Lectures.   Attendance is required. You are responsible for all material presented in lecture; some of that material is not covered in the textbooks.

Precepts.   We cover details pertinent to assignments and exams in precepts, on Thursdays and Fridays. You should come to precept prepared to participate in the discussion, not just ask questions.

Orientation precept   If you have not taken COS 126, please plan to attend a one-time orientation at 5PM on Wednesday, February 3 room Friend 006, to learn about our conventions for preparing and submitting assignments.

Staff.   You are welcome to attend the office hours of any staff member. Office hours start Thursday, Feb 4. The last day of office hours is Monday, May 3, unless otherwise noted. There will be additional office hours on Thursday, May 20. They are listed on the final exam page.

        TIME      ROOM    PERSON    OFFICE      HOURS           EMAIL       
L01 M W
11–12:20pm
CS
104
Bob
Sedgewick
CS
319
W 5/5 and W 5/12
12:30–2:00pm
rs@cs
P01 Th
12:30–1:20pm
Friend
108
Charles
Vaske
Icahn
225
M 5/3 10–11am
Th 5/20 noon-1pm
cvaske@genomics
P01A Th
12:30–1:20pm
Friend
109
Maia
Ginsburg
CS
205
M 9:45–10:45am
T 5/4 3:00-4:00pm
Th 1:30–2:30pm
maia@cs
P03 Th
3:30–4:20pm
Friend
108
Szymon
Rusinkiewicz
CS
406
M 2:00–3:00pm
W 3:00–4:00pm
smr@cs
P02 F
11:00–11:50am
Friend
108
Berk
Kapicioglu
Friend
017
W 4:00–5:00pm
F 12:00–1:00pm
bkapicio@cs
P02A F
11:00–11:50am
Friend
109
Linjie
Luo
CS
418A
W 4:30–5:30pm
F 1:30–2:30pm
linjiel@cs

Grades.   Your grade for the course will be based on the following components: programming assignments: (45%), midterm exam: (15%), final exam: (25%), and exercises (15%), and staff discretion.

Course website.   The COS 226 website is

http://www.princeton.edu/~cos226
It includes links to course content, including lecture slides, programming assignments, and exercises. You will also use it to submit programming assignments and check grades.

Readings.   The textbook for the course is

This book is currently under development. A preliminary edition (ISBN 0-321-71317) will be available at Labyrinth Books (122 Nassau St.) the week of February 8. Selected chapters from old editions and some new material will be made available to you during the semester.

The following is a recommended basic Java programming reference:

You are expected to read the textbooks. They contain a wealth of information beyond what we can cover in lecture that are certain to enhance your understanding of the course material.

Booksites.   You can also find an extensive amount of supplementary information at the booksites:

http://www.cs.princeton.edu/IntroProgramming

http://www.cs.princeton.edu/algs4

including the code from lecture.

Programming assignments.   There will be regular programming assignments. These involve applying the material from lecture to solve problems in science, engineering, and commerce.

Exercises.   There will also be weekly exercises. These will consist of short questions on the material in the lectures and readings.

Exams.   There will be an in-class midterm exam (see the lecture page for which day) and a final exam as scheduled by the Registrar. Here is an archive of old exams.

Computers.   You may develop your programs on any machine that you like: we encourage you to use your own equipment. We provide instructions for for setting up a Java programming environment under Windows, OS X, and Linux.

Labs.   We hire undergraduate lab assistants who are available to answer general computing questions in the Friend 016 and 017 labs. Lab TAs can assist you in debugging, provided you have first made a reasonable effort to identify the bug and isolate the problem. If you have questions regarding the course material or programming assignments, see your preceptor or instructor.

Important note.   Please do not publish solutions to programming assignments 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.

Copyright.   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 Java to use this supplemental material in conjunction with their course.

Short history of credits.   These course materials have been under development by Robert Sedgewick since at least 1978. The lecture notes and assignments were rewritten by Robert Sedgewick and Kevin Wayne in 2003–2010.