Computer Science 226
Data Structures and Algorithms
Spring 2002


Course Information | Announcements | Assignments | Exercises | Lectures | Errata

COURSE INFORMATION

Instructors:   Robert Sedgewick, CS Bldg. 319, 258-4345, rs@cs.
  Kevin Wayne, CS Bldg. 207, 258-4455, wayne@cs.

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.

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

Lectures:   MW 11-11:50, McCosh 46. Attendance at lectures is expected.

Precepts:   Precepts meet on Monday for 50 minutes. The first precept is 2/11. At precepts, we return and discuss the program and written assignment that were handed in the previous week, and give details and answer questions about the new assignment. You should come prepared to participate in the discussion, not just ask questions.

# Time Room Preceptor Office Hours Email
 1  M 12:30 CS 102 Bo Brinkman Cafe Vivian W 12:00 (noon) brinkman@cs
 2  M 1:30 CS 103 Bob Sedgewick CS 319 T 12-1 rs@cs
 5  M 1:30 Friend 110 Kevin Wayne CS 207 Mon 3:30pm wayne@cs
 3  M 2:30 Friend 204 Kevin Wayne CS 207 Wed 3pm wayne@cs
 4  M 3:30 CS 102 Lujo Bauer CS 418a Wed 5pm lbauer@cs


Web Site:   The COS 226 course website is http://www.cs.princeton.edu/courses/cs226. It contains copies of the lecture notes, programming assignments, and exercises.

Textbooks:   The course textbooks are:

  • Algorithms in C, Third Edition, Parts 1-4 by Robert Sedgewick, Addison-Wesley, 1998.
  • Algorithms in C, Third Edition, Part 5 by Robert Sedgewick, Addison-Wesley, 2002.
  • COS 226 Course Packet, Spring 2002 by Robert Sedgewick, Pequod Copy, 2002.
  • Prerequisites:   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.

    Grades:   Your grade for the course will be based on the following components:

    There will be weekly programming assignments. Generally, they will be due on Thursdays at 11:59 PM. 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.

    There will also be weekly exercises. These will be due at precept on Mondays. These will consist of short questions on the material in the lectures, notes, and programs. Many of these questions will reappear on the exams, but with different input data.

    There will be an in-class 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 is comprehensive, although it will stress material covered since the midterm. Unless prior arrangements are made, a grade of zero will be recorded for missed exams. Exams are closed book. You may bring a 8.5-by-11 sheet with handwritten notes to the exam. No calculators or other computational devices.

    Computers:   You may develop your programs on any machine that you like: we encourage you to use your own equipment. However, your finished programs must run on any ANSI C89 compliant system. We provide instructions for setting up such a C programming environment on Windows, OS X, and arizona machines.


    COS 226 Home Page
    rs@cs.princeton.edu
    Last modified: February 5, 2002