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. Many studies show that laptops (even for note taking) harm learning. More importantly, they also harm other students' learning.

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.

Arvind Narayanan
Faculty
Instructor

Maia Ginsburg
Faculty
Lead Preceptor

Ibrahim Albluwi
Faculty
Lead Preceptor

Ross Teixeira
Graduate Student
Preceptor

Qasim Nadeem
Graduate Student
Preceptor

Lisa Jian
Graduate Student
Preceptor

Matthew Weaver
Graduate Student
Preceptor

Mohamed El-Dirany
Graduate Student
Preceptor

Christopher Hodsdon
Graduate Student
Preceptor

The staff is complemented by a team of Undergraduate Course Assistants (TBA).

Office hours. You are welcome to attend the office hours of any staff member. Before going to any of these office hours, make sure to double-check that they were not moved or cancelled for that day by visiting the Help page.

TIME ROOM PERSON OFFICE HOURS
L01 Tue/Thu
11–12:20pm
Friend
101
Arvind
Narayanan
308
Sherrerd Hall
Wednesday
2-4pm
P01 Thursday
3–4:20pm
Friend
108
Lisa
Jian
Friend 010 Tuesday
3-5pm
P01A Thursday
3-4:20pm
Andlinger Center
017
Mohamed
El-Dirany
Friend 010 Sunday
3-5pm
P02 Thursday
1:30-2:50pm
Friend
108
Maia
Ginsburg
Corwin 041 Monday
3-5pm
P03 Friday
8:30-9:50am
Friend
009
Ibrahim
Albluwi
221 Nassau St. Monday
11am-1pm
Friend 010
P04 Friday
11am–12:20pm
Friend
009
Ross
Teixeira
Friend 010 Sunday
3-5pm
P04A Friday
11am-12:20pm
Friend
112
Qasim
Nadeem
Friend 010 Monday
1-3pm
P05 Friday
1:30–2:50pm
Friend
009
Maia
Ginsburg
Corwin 041 Monday
3-5pm
P05A Friday
1:30–2:50pm
Friend
111
Matthew
Weaver
Friend 010 Friday
3-5pm
P05B Friday
1:30–2:50pm
Friend
109
Christopher
Hodsdon
Friend 010 Thursday
3-5pm
P06 Friday
3:00–4:20pm
Friend
009
Ibrahim
Albluwi
221 Nassau St. Monday
11am-1pm
Friend 010

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 Thursday, March 14. The final exam is scheduled by the Registrar.

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 (30%).

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.

Makeups. No makeup midterm exams will be offered, except for extraordinary circumstances; in such cases, you must get both the recommendation of a Dean or Director of Studies and course staff approval.

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 that accompany the course textbook via Salon.

Discussion forum. The best way to ask a short question about the course materials is via Piazza, an online discussion forum where you can ask (and answer) questions.

Programming environment. You may develop your Java programs on any machine that you like. Here are instructions for setting up an IntelliJ-based programming environment under Mac OS X, Windows, 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. For non-debugging questions, use Piazza or office hours.