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 approval by the COS placement officer.
Lectures. Lectures meet at 11–12:20pm on Tuesdays and Thursdays in McCosh 50. 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 Instructor |
Dan Leyzberg Instructor |
Jérémie Lumbroso Instructor |
Sabhya Chhabria Preceptor |
Gabriel Contreras Preceptor |
Jennifer Lam Preceptor |
Yingxi Lin Preceptor |
Morgan Nanez Preceptor |
Ross Teixeira Preceptor |
Shelley Xia Preceptor |
Yiming Zuo Preceptor |
The staff is complemented by a team of undergraduates who serve as precept assistants, graders, and grading managers.
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 | FACILITATORS | |
---|---|---|---|---|
L01 | T Th 11–12:20pm |
McCosh 50 |
Kevin Wayne |
– |
P01 | Th 3–4:20pm |
JRR A02 |
Morgan Nanez |
Andrew Akshat |
P02 | Th 7:30–8:50pm |
JRR A97 |
Jennifer Lam |
Rebecca Adam |
P02A | Th 7:30–8:50pm |
JRR A98 |
Sabhya Chhabria |
Rafay Dwaipayan |
P03 | F 11–12:20pm |
JRR A98 |
Ross Teixeira |
Yagiz Lacey Katie H. |
P03A | F 11–12:20pm |
JRR A87 |
Dan Leyzberg |
Caiden Harvey |
P03B | F 11–12:20pm |
JRR A02 |
Gabriel Contreras |
Aditya Donna |
P04 | F 1:30–2:50pm |
JRR A98 |
Shelley Xia |
Mary Katie B. |
P04A | F 1:30–2:50pm |
JRR A87 |
Yiming Zuo |
Willow Faisal |
P05 | F 3–4:20pm |
JRR A98 |
Yingxi Lin |
Amrita Joah |
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%).
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 in-class on Thursday, March 9. The final exam is Friday, May 12 at 9am.
Participation. Participation in this course is fundamental to engaged learning, including using iClickers in lecture and collaborating with a classmate in precept. You are expected to attend each scheduled lecture and precept on time and ready to participate fully.
Regrades. If you believe that a mistake was made in the grading of your work, please use the regrade request features of codePost or GradeScope. Regrade requests must be submitted within three days of your work being returned.
Course website. This course website includes links to course content, including lecture slides, precept lessons, programming assignments, quizzes, and old exams.
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 that accompany the textbook via CUbits.
Lecture recordings. You can access recordings of the in-person lectures via the Panopto link in Canvas.
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.
Canvas. We will post grades in Canvas.
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 in Lewis 121/122. 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.