Syllabus

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.

Lectures Available as studio-produced videos for you to watch at your own pace.

Class meetings Class meetings are held twice per week, Tues/Thurs 11:00-11:50am.

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.

Required reading.
Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
Addison-Wesley Professional, 2011, ISBN 0-321-57351-X.

Staff

David P. Walker
Faculty
Preceptor

Maia Ginsburg
Faculty
Lead Preceptor

Jérémie Lumbroso
Faculty
Instructor

Mikkel Kringelbach
Graduate Student
Preceptor
Tosin Adewale
Graduate Student
Preceptor
Kathleen J Emerson
Graduate Student
Preceptor
Anders Miltner
Graduate Student
Preceptor
Sergiy Popovych
Graduate Student
Preceptor
Ashley J Thomas
Graduate Student
Preceptor
Zoi Paraskevopoulou
Graduate Student
Preceptor

Office Hours. You are welcome to attend the office hours of any staff member. Office hours are for assignment weeks, not exam weeks and begin Weds, Feb 8 2017.

TIME ROOM PERSON OFFICE HOURS
L01 M W
11–12:20pm
McCosh
10
Jérémie Lumbroso   †
lumbroso At cs.princeton.edu
CS
209
Mon 2pm-3pm
Weds 2pm-3pm
P01 Thurs
9:00–9:50am
Friend
009
Maia Ginsburg   †
maia At cs.princeton.edu
CS
205
Fri 3:00 - 5:00pm
P02 Th
10:00–10:50am
Friend
009
Sergiy Popovych
popovych At cs.princeton.edu
Friend
010
Thurs 5:00-7:00pm
P02A Th
10:00–10:50am
Friend
108
Anders Miltner
amiltner At cs.princeton.edu
Friend
010
Weds 2:00-3:00pm
Th 11:00am-noon
P03 Th
11:00–11:50pm
Friend
009
Maia Ginsburg   †
maia At cs.princeton.edu
CS
205
Fri 3:00 - 5:00pm
P03A Th
11:00–11:50pm
Friend
108
Mikkel Kringelbach
Mikkelk At cs.princeton.edu
Friend 010 Th 3:00 - 5:00pm
P04 Th
12:30–1:20pm
Friend
009
Ashley Thomas
ajthomas At cs.princeton.edu
Friend 010 T 11:00am-noon
Weds 3:00-4:00pm
P04A Th
12:30–1:20pm
Friend
108
Dave Walker
dpw At cs.princeton.edu
CS
211
Mo 3:00-4:00pm
Tu 3:30-4:30pm
P04B Th
12:30–1:20pm
Friend
109
Kathleen Emerson
kje At princeton.edu
Friend 010Sun 2:30-4:30pm
P05 Th
1:30–2:20pm
Friend
009
Tosin Adewale
oadewale At cs.princeton.edu
Friend 010 Fri 1:00 - 3:00pm
P05A Th
1:30–2:20pm
Friend
108
Dave Walker
dpw At cs.princeton.edu
CS
211
Mo 3:00-4:00pm
Tu 3:30-4:30pm
† co-lead preceptors

Need to switch into a full precept? Please contact Colleen Kenny-McGinley.

GRADING

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

Discretion includes participating in precepts, answering forum posts on Piazza, excellent standing on leaderboards, and answering challenge questions from precept.
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.

RESOURCES

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.

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

Piazza. Piazza is an online forum where you can ask and answer short questions.

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 Quizzera, and are due each Thursday (most weeks) at 11:00 PM.

Exams. All exams are in-class exams. Dates are all Weds: 3/15 - programming 3/29, 4/26 - written 5/3 - design

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 and 122. 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 other than debugging, use piazza or office hours to ask your preceptor or instructor.