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

Lectures. Lectures meet at 11–12:20pm on Tuesdays and Thursdays in Friend 101. Laptops, tablets, and phones are prohibited, except for activities directly related to lecture, such as viewing lecture slides and taking notes.

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.

Course staff.

Kevin Wayne
Faculty
Instructor

Maia Ginsburg
Faculty
Lead Preceptor

Ibrahim Albluwi
Faculty
Lead Preceptor

Lisa Jian
Graduate Student
Preceptor

Chris Sciavolino
Graduate Student
Preceptor

Molly Pan
Graduate Student
Preceptor

Tim Alberdingk Thijm
Graduate Student
Preceptor

The staff is complemented by a team of Undergraduate Course Assistants who assist in office hours (Moin Mir and Frederick Qiu) and grading (Audrey Cheng, Anna Qin, Alex Dipasupil, Alex Valtchanov, Andrew Castleman, Ayush Alag, Austin Lau, Angelo Ou, Connor Hainje, Camille Liotine, Cathy Teng, Daphne Barretto, Daniel Bauman, David Todd, Erin Vuong, Felipe Doria, Faisal Fakhro, Gabriel Lebeau, Howard Yen, Janet Wang, Joseph Kim, Kevin Huang, Kevin Feng, Karen Li, Ryan Eusebi, Srija Makkapati, Will Li, Yoni Goldberg, and Ze-Xin Koh).

Office hours. You are welcome to attend the office hours of any staff member. Office hours are listed on the Help page.

TIME ROOM PERSON OFFICE
L01 T Th
11–12:20pm
Friend
101
Kevin
Wayne
Corwin
040
P01 Th
1:30–2:50pm
1976 Hall
028
Maia
Ginsburg
Corwin
041
P02 Th
3–4:20pm
1976 Hall
028
Maia
Ginsburg
Corwin
041
P03 F
11–12:20pm
Friend
009
Ibrahim
Albluwi
221 Nassau St.
Room 106
P03A F
11–12:20pm
1976 Hall
028
Tim
Alberdingk Thijm
CS
215
P04 F
1:30–2:50pm
Friend
009
Lisa
Jian
TBA
TBA
P04A F
1:30–2:50pm
Equad
E225
Chris
Sciavolino
TBA
TBA
P05 F
3–4:20pm
Friend
009
Ibrahim
Albluwi
221 Nassau St.
Room 106
P07 F
11–12:20pm
Friend
016
Molly
Pan
CS
318

ASSESSMENTS

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 in-class midterm exam is Tuesday, March 24. The final exam is Monday, May 18 at 7:30pm in McCosh 50.

iClickers. To make the lectures more interactive, we will be using iClickers. Any hardware version is suitable. You must register your device in Blackboard.

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 includes using iClickers in lecture and making positive contributions in precept or on the course discussion forum.

Regrades. If you believe that your work was misgraded, write a short note describing the potential mistake; attach it to the graded work; and give it to your preceptor within two weeks of when the work was returned.

RESOURCES

Course website. This course website includes links to course content, including lecture slides, 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.

Lecture videos. You can access lecture videos via CUvids.

Discussion forum. The best way to ask a short question about the course materials is via Ed, 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.

Workstation computers. If you do not have a computer (or your computer fails during the semester), we recommend using the Mac OS X machines in either the McGraw DLL or J-Street Library, which have our custom IntelliJ-based programming environment pre-installed.

Lab TAs. 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. For non-debugging questions, use Ed or office hours.