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, graphs, and strings. The course concentrates 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. Lectures meet at 11–12:20pm on Tuesdays and Thursdays over Zoom. Attendance is required.
Precepts. Precepts meet once per week and cover details pertinent to programming assignments, quizzes, and exams. Come prepared to participate in the discussion, not just ask questions. This includes reading the assignment specification before the corresponding precept.
Course staff.
Kevin Wayne Faculty Instructor |
Maia Ginsburg Faculty Instructor |
Dan Leyzberg Faculty Instructor |
Qingchen Dang Graduate Student Preceptor |
Akash Gaonkar Graduate Student Preceptor |
Danqi Liao Graduate Student Preceptor |
Lahav Lipson Graduate Student Preceptor |
Victor Ongkowijaya Graduate Student Preceptor |
Chloe Qiu Graduate Student Preceptor |
The staff is complemented by a team of Undergraduate Course Assistants who assist in precepts and office hours (Aliya Ismagilova, Alkin Kaz, Allison Chou, Ananya Parashar, Justin Sherman, Harvey Wang, Ryan Eusebi, and Tejas Gupta) and grading (Alex Valtchanov, Alkin Kaz, Allison Chou, Brendan Zelikman, Christine Sun, Connor Hainje, Creston Brooks, Emre Onal, Erin Vuong, Howard Yen, Jake Intrater, Jenny Sun, Julio Cezar Castro Lins Barroso, Karen Li, Katie McLaughlin, Mandy Lin, Natalie O'Leary, Natalie Reptak, Nick Padmanabhan, Nika Belova, Rishi Dange, Ryan Eusebi, Sam Liang, Scott Aravena, Shannon Heh, Taylor Akin, Tri Dinh, Trivan Menezes, Yoni Goldberg, and Zoha Enver).
Office hours. You are welcome to attend the office hours of any staff member. Office hours are listed on the Help page.
Schedule. Here is the schedule for lectures and precepts.
TIME | LOCATION | PERSON | FACILITATOR | |
---|---|---|---|---|
L01 | T Th 11–12:20pm |
Zoom | Kevin Wayne |
|
P01 | Th 3–4:20pm |
Zoom | Dan Leyzberg |
Justin Sherman |
P02 | Th 4:30–5:50pm |
Zoom | Victor Ongkowijaya |
Ananya Parashar |
P03 | F 11–12:20pm |
Zoom | Qingchen Dang |
Aliya Ismagilova |
P04 | F 11–12:20pm |
Zoom | Maia Ginsburg |
Tejas Gupta |
P05 | F 1:30–2:50pm |
Zoom | Lahav Lipson |
Aliya Ismagilova |
P06 | F 1:30–2:50pm |
Zoom | Akash Gaonkar |
Alkin Kaz |
P07 | F 3–4:20pm |
Zoom | Danqi Liao |
Harvey Wang |
P08 | F 3–4:20pm |
Zoom | Dan Leyzberg |
Ryan Eusebi |
P10 | Th 7:30–8:50pm |
Zoom | Chloe Qiu |
Allison Chou |
Programming assignments. The programming assignments involve applying the material from lecture to solve problems in science, engineering, and commerce.
Quizzes. The quizzes consist of two or three short questions per lecture, to ensure that you are keeping up with the material.
Exams. The midterm exam is Monday, March 22. The final exam is Tuesday, May 11 at 1:30pm ET.
iClickers. To make the lectures more interactive, we will be using iClicker Reef (iOS, Android, or Web app). Sign up for a iClicker Reef acount; select Princeton University as the institution; use your Princeton email address for the registration; and select COS 226, Spring 2021 as the course. After the 2-week free trial ends, you will need a paid subscription.
Course grades. Your grade for the course will be based on the following components: programming assignments (45%), quizzes (10%), midterm exam (15%), final exam (25%), and participation (5%).
Participation. Participation in this course is fundamental to engaged learning, including using iClickers in lecture and making positive contributions in precept. You are expected to attend each scheduled class on time and ready to participate fully. Blanket waivers will be granted only for exceptional circumstances (such as living in a distant time zone, inadequate internet connectivity, or an unworkable home environment), as documented by your residential college.
Regrades. If you believe that your work was misgraded, write a short note describing the potential mistake; attach it to the graded work; and email it to your preceptor within two weeks of when the work was returned.
Course website. This course website includes links to course content, including lecture slides, precept lessons, programming assignments, quizzes, and old exams.
Canvas. We will post Zoom links and Zoom recording in Canvas.
Textbook. Algorithms, 4th edition by Robert Sedgewick and Kevin Wayne. Addison-Wesley Professional, 2011, ISBN 0-321-57351-X. The assigned readings are required.
Booksite. The booksite contains many useful resources while programming.
Studio-produced lecture videos. You can access studio-produced lecture videos via CUvids.
Discussion forum. The best way to ask a short question about the course materials is via Ed Discussion, an online discussion forum where you can ask (and answer) questions.
Programming environment. We recommend developing Java programs for this course on your personal laptop or desktop. Here are instructions for setting up a custom IntelliJ-based programming environment under Mac OS X, Windows, and Linux.
Lab TAs. Undergraduate lab TAs are available to answer general computing questions via Zoom. They can assist you in debugging, provided you have first made a reasonable effort to identify the bug and isolate the problem. For non-debugging questions, use Ed Discussion or office hours.