Algorithms and Data Structures for Applications

Course Description

An introduction to some fundamental algorithms and data structures.

Prerequisites

Familiarity with basic programming, algorithms and data structures (at the level taught in a sophomore course), or permission of instructor.

Course Staff

Instructors: Ramin Zabih and Greg Zecchini

TA: Gengmo Qi

Graders/consultants: Yue Wang, Ta-Wei Mao, Zhenwei Zhang, Yong Huang, Siyu Yao, Xiran Sun

Lecture: Monday and Wednesday, 5:00pm-6:15pm, Bloomberg auditorium

Office hours

-TA

  • Gengmo: By appointment(email or Slack)

-Graders

  • Monday 11:00 - 12:00: Ta-Wei Mao, Bloomberg 360
  • Monday 15:00 - 16:00: Xiran Sun, Bloomberg 360
  • Tuesday 11:00 - 12:00: Yong Huang, Bloomberg 377
  • Wednesday 11:00 - 12:00: Siyu Yao, Bloomberg 377
  • Thursday 14:00 - 15:00: Zhenwei Zhang, Bloomberg 375
  • Thursday 15:00 - 16:00: Yue Wang, Bloomberg 377

Communication

Please join our slack workspace (must use an @cornell.edu email address). The #announce channel on that workspace is the channel by which we will distribute all course information.

Lectures

Topics and schedule are tentative and subject to change

Video recordings of the lectures can be found on Mediasite

Date Lecture Slides Deadlines
9/4 Lecture 1: Dynamic Programming PDF, Powerpoint
9/9 Lecture 2: Dynamic Programming (continued) PDF, Powerpoint
9/11 Lecture 3: Dijkstra PDF, Powerpoint Quiz 1 : due 9/13
9/16 Lecture 4: Union find PDF, Powerpoint
9/18 Lecture 5: Balanced Trees PDF, Powerpoint Quiz 2 : due 9/20
9/23 Lecture 6: k-d Trees for nearest neighbors PDF, Powerpoint HW1 released
9/25 Lecture 7: Minimum spanning trees PDF, Powerpoint Quiz 3 : due 10/2
9/30 Lecture 8: Data representation and real-world efficiency PDF, Powerpoint
10/2 Lecture 9: Max flow / Min cut PDF, Powerpoint Quiz 4 : due 10/4
10/7 Lecture 10: Association rules PDF, Powerpoint HW 1: due 10/7
10/9 Lecture 11: More graph problems / Complexity theory PDF, Powerpoint Quiz 5 : due 10/11
10/14 Indigenous Peoples' Day, no class
10/16 Lecture 12: Reductions, lower bounds and approximation algorithms PDF, Powerpoint Quiz 6 : due 10/18
10/21 Lecture 13: Exam review HW2 released
10/23 Prelim 2018 Prelim Prelim coverage changes from year to year
10/28 Lecture 14: Concurrency PDF, Powerpoint
10/30 Lecture 15: Distributed Computing PDF, Powerpoint Quiz 7 : due 11/1
11/4 Lecture 16: Streaming algorithms PDF, Powerpoint HW2 due
11/6 Lecture 17: Streaming algorithms and hashing PDF, Powerpoint HW3 release, Quiz 8 : due 11/8
11/11 Lecture 18: Proof by Induction PDF, Powerpoint
11/13 Lecture 19: Reductions, lower bounds, hashing PDF, Powerpoint Quiz 9 : due 11/15
11/18 Lecture 20: Distributed hashing PDF, Powerpoint
11/20 Lecture 21: Locality sensitive hashing PDF, Powerpoint HW3 due
11/25 Lecture 22: Back propogation PDF, Powerpoint Quiz 10 : due 11/26
11/27 Thanksgiving break, no class
12/2 Lecture 23: Max flow for computer vision PDF, Powerpoint HW4 due
12/4 Lecture 24: Exam review
12/9 Final Exam, in class 2018 Final Final coverage changes from year to year

Assignments

All assignments are available on the course CMS. Due dates for assignments without CMS links are tentative.

Assignment Due Date
Assignment 1: Dynamic Programming October 7
Assignment 2: Graph Shortest Path November 4
Assignment 3: Reduction November 20
Assignment 4: Streaming & hashing December 2

Textbooks: none required

Recommended textbook: Mining of Massive Datasets

Course Requirements and Grading

  • Grade Breakdown: Your grade will be determined by the assignments (25%), one prelim (25%), a final exam (35%), and quizzes (15%). All assignments will be available on the course CMS.
  • Homework: There will be approximately four short programming assignments. Each assignment will have a due date for completion.
  • Late Policy: Each student has a total of one slip day that may be used without penalty for homework. We will also drop your lowest quiz score and lowest homework score. An assignment can be at most one day late without penalty via slip days.
  • Collaboration: You are required to work in groups of 2 students on each assignment. Please indicate the name of your collaborator at the top of each assignment and cite any references you used (including articles, books, code, websites, and personal communications). If you're not sure whether to cite a source, err on the side of caution and cite it. You may submit just one writeup for the group. Remember not to plagiarize: all solutions must be written by members of the group. If you are the odd person out we will have you join an existing group of 2.
  • Quizzes: There will be short multiple-choice quizzes, generally at the end of the week. These are take home, and due within 24 hours.
  • Prelim: In class. Tentative date: Wednesday October 23. The exam is closed book.
  • Final Exam: In class. Date: Monday December 9. The exam is closed book.