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 Thomas Lab 003. 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

Andy Guna
Faculty
Lead Preceptor

Ross Teixeira
Graduate Student
Preceptor

Qasim Nadeem
Graduate Student
Preceptor

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

Review sessions. Review sessions meet at 2:30–3:20pm on Friday afternoons in CS 105. They are intended for students seeking extra help to keep up with the course materials, featuring a weekly recap, Q&A session, and active-learning activities.

Office hours. You are welcome to attend the office hours of any staff member.

TIME ROOM PERSON OFFICE HOURS
L01 T Th
11–12:20pm
Thomas Lab
003
Kevin
Wayne
CS
207
M
2–4pm
P01 F
9–9:50am
Friend
009
Maia
Ginsburg
CS
205
Lewis 122
Sun 3–5
P02 F
10–10:50am
Friend
009
Andy
Guna
221 Nassau St.
Room 103
T Th
2–4pm
P03 F
11–11:50am
Friend
009
Andy
Guna
221 Nassau St.
Room 103
T Th
2–4pm
P03A F
11–11:50am
Friend
108
Ross
Teixeira
Friend
010
F
2–4pm
P04 F
12:30–1:20pm
Friend
009
Ross
Teixeira
Friend
010
F
2–4pm
P05 F
1:30–2:20pm
Friend
009
Qasim
Nadeem
Friend
010
M
4–6pm
P06 Th
3:30–4:20pm
Friend
009
Maia
Ginsburg
CS
205
Lewis 122
Sun 3–5
staff Michael
Tarczon
Lewis
121
M
6–8

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, October 24. The final exam is Monday, January 22 at 1:30pm in McCosh 10.

iClickers. To make the lectures more interactive, we will be using iClickers. Any hardware version is suitable.

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 Piazza.

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 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 programs on any machine that you like. Here are instructions for setting up a Java 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.