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, 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 Friend 101. 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

Dan Leyzberg
Faculty
Instructor

Jérémie Lumbroso
Faculty
Instructor

Gabriel Contreras
Graduate Student
Preceptor

Weicong Dong
Graduate Student
Preceptor

Yingxi Lin
Graduate Student
Preceptor

Morgan Nanez
Graduate Student
Preceptor

Max Tchouambe
Graduate Student
Preceptor

Ryan Torok
Graduate Student
Preceptor

The staff is complemented by a team of Undergraduate Course Assistants who assist in precepts and office hours (Aditya Mehta, Alex Zhang, Andrew Tao, Arya Maheshwari, Brian Tieu, Bryan Wang, Cecilia Zubler, Dwaipayan Saha, Emmy Song, Harvey Wang, Jerry Huang, Kartik Shah, Kenny Lam, Mary Tsahas, Niva Sivakumar, Rebecca Zhu, Samuel Frank, Saumya Malik, Ty Kay, and Zachary Siegel) and grading (First Last).

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
Friend
101
Kevin
Wayne
P01 Th
3–4:20pm
Friend
108
Dan
Leyzberg
Kenny Lam
Saumya Malik
Niva Sivakumar
P02 Th
7:30–8:50pm
Friend
004
Morgan
Nanez
Ty Kay
Andrew Tao
Dwaipayan Saha
P03 F
11–12:20pm
Friend
108
Max
Tchouambe
Mary Tsahas
Aditya Mehta
P04 F
11–12:20pm
Sherrerd
001
Yingxi
Lin
Alex Zhang
Emmy Song
Harvey Wang
P05 F
1:30–2:50pm
Julis Romo
A12
Dan
Leyzberg
Cecilia Zubler
Kartik Shah
P06 F
1:30–2:50pm
Julis Romo
A87
Weicong
Dong
Bryan Wang
Brian Tieu
P07 F
3–4:20pm
Julis Romo
A97
Ryan
Torok
Rebecca Zhu
Arya Maheshwari
Zachary Siegel
P08 F
3–4:20pm
cancelled
P09 F
11–12:20pm
Julis Romo
A97
Gabriel
Contreras
Samuel Frank
Jerry Huang

ASSESSMENTS

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 Thursday, March 3. The final exam is Saturday, May 7 at 7:30pm.

Participation. Participation in this course is fundamental to engaged learning, including using iClickers in lecture. You are expected to attend each scheduled lecture on time and ready to participate fully.

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 one week of when the work was returned.

RESOURCES

Course website. This course website includes links to course content, including lecture slides, precept lessons, programming assignments, quizzes, and old exams.

Algorithms, 4th edition

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.