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 (Joseph Rubin, Audrey C. Cheng, Michelle Woo, Edward J. Gartner, Simon Park, Ariel Chen, Natalie O'Leary, Watson Jia, Kevin Jeon, Jessica Pan, Anna Qin, Alex Dipasupil, Vedika Patwari, Livia Qoshe, Connor M. Hainje, Alice Gao, Labib Hussain, Henry T. Wang, Caio D. Costa, William Li, Scott M. Aravena, Betsy Pu).
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 |
Lewis 121 | 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 |
Lewis 121 | 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 |
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 Saturday, May 18 at 1:30pm in McCosh 46 and 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 (30%).
Regrades.
If you believe that your work was misgraded,
post privately on piazza by Friday, May 24 (for the final).
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.
Course website. This course website includes links to course content, including lecture slides, 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.
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.
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.
Assignment Feedback. You can check your assignment feedback, grades and used late days on codePost.
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.
Workstation computers. For students who may not have a computer or for students whose computers fail during the semester: