Computer Science 226
Algorithms and Data Structures
Spring 2016


Course Information | Lectures | Flipped | Assignments | Precepts | Exercises | Exams

COURSE INFORMATION


If you are unable to enroll because the only precepts you can attend are closed, email Colleen Kenny-McGinley.
If you have other administrative questions before the semester begins, please email Maia Ginsburg).

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 ISC 231–234 or approval by the COS placement officer.

Traditional lectures.   Attendance is required. Laptops, tablets, and phones are prohibited, except for activities directly related to lecture, such as viewing lecture slides and taking notes. You are responsible for all material presented in lecture; some of that material is not covered in the textbook.

Flipped lectures.   As an alternative to traditional lectures, we are offering a flipped lecture option, in which you watch and tag video lectures online before class and solve problems in class. Enrollment is limited to 30 students.

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

Course staff.   You are welcome to attend the office hours of any staff member. Office hours begin Wednesday, February 3.

TIME ROOM PERSON OFFICE HOURS
L01 M W
11–12:20pm
McCosh
10
Arvind
Narayanan
arvindv at cs.princeton.edu
Sherrerd
308
Wed
2–4pm
L02 M W
11–12:20pm
Jadwin
A10
Andy
Guna
guna at cs.princeton.edu
221 Nassau St.
Room 103
Mon
12:30–2:30pm
P01 Th
9–9:50am
Friend
108
Maia
  Ginsburg †
maia at cs.princeton.edu
CS
Room 205
Tue
12:30–2:30pm
P02 Th
10–10:50am
Friend
108
Shivam
Agarwal
shivama at cs.princeton.edu
Sherrerd 3rd Floor
Common Area
Tue
5–7pm
P02A Th
10–10:50am
Friend
109
Marc
Leef
mleef at cs.princeton.edu
CS
001B
Mon
6‐8pm
P03 Th
11–11:50am
Friend
108
Maia
  Ginsburg †
maia at cs.princeton.edu
CS
Room 205
Tue
12:30‐2:30pm
P03A Th
11–11:50am
Friend
109
Ming-Yee
Tsang
mtsang at cs.princeton.edu
Lewis
121
Sat
4–6pm
P04 Th
12:30pm–1:20pm
Friend
108
Miles
Carlsten
carlsten at cs.princeton.edu
Sherrerd 3rd Floor
Common Area
Mon
4–6pm
P05 Th
1:30pm–2:20pm
Friend
112
Sergiy
Popovych
popovych at cs.princeton.edu
Lewis
121
Sun
4:30–6:30pm
P06 F
10–10:50am
Friend
108
Andy
  Guna 
guna at cs.princeton.edu
221 Nassau St.
Room 103
Mon
12:30–2:30pm
P07 F
11–11:50am
Friend
108
Andy
  Guna 
guna at cs.princeton.edu
221 Nassau St.
Room 103
Mon
12:30–2:30pm
P07A F
11–11:50am
Friend
109
Harry
Kalodner
kalodner at cs.princeton.edu
CS
241 (front)
Tues
3–5pm
P99 M
7:30–8:20pm
221 Nassau St.
Conference room
Andy
Guna
guna at cs.princeton.edu
221 Nassau St.
Room 103
Mon
12:30–2:30pm
† co-lead preceptors

The staff is complemented by Undergraduate Course Assistants.

Online forum.   If you have questions about the assignments, lectures, textbook, or other course materials, please post via Piazza. Posts marked private are viewable only by the course staff.

Grading.   Your grade for the course will be based on the following components: programming assignments (45%), midterm exam (15%), final exam (25%), exercises (10%), and participation (5%). Participation includes using iClickers, contributing to the flipped lectures, participating in precepts, and answering forum posts. Occasionally, we make mistakes. To request a regrade, write a brief note indicating the perceived mistake by the grader; attach it to your graded work; and give it to your preceptor within two weeks of when the graded work was returned.

Course website.   The course website

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

Readings.   The following textbook is required. It contains a wealth of information beyond what we can cover in lecture; it is certain to enhance your understanding of algorithms and data structures.

Booksite.   There are many resources that you can find at the booksite http://algs4.cs.princeton.edu/home/

iClickers.   To make the lectures more interactive, we will be using iClickers in the traditional lectures. Any hardware version of the iClicker (set to default frequency AA) is suitable. You cannot use iClicker GO because the lecture hall has insufficient connectivity.

Programming assignments.   The programming assignments involve applying the material from lecture to solve problems in science, engineering, and commerce.

Exercises.   The exercises consist of short drill questions on the material in the lectures and readings. They are done within Blackboard, and are due each Sunday at 11:00 PM.

Exams.   The in-class midterm exam is TBD. The final exam will be scheduled by the Registar.

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

Laboratories.   Undergraduate lab TAs are available to answer general computing questions in Lewis 121. They 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.