Algorithm design and analysis is a fundamental and important part of computer science. This course introduces students to advanced techniques for the design and analysis of algorithms, and explores a variety of applications.
The topics and applications that we tentatively plan to cover include hashing, bloom filters, scheduling, network design, online load balancing, algorithms in machine learning, boosting (in the context of learning), Markov chains and the MCMC method, byzantine agreement, internet algorithms, and nearest neighbor algorithms. Enroute, we will encounter various useful ideas, including randomization, probabilistic analysis, amortized analysis, competitive analysis, eigenvalues, linear and semi-definite programming, high dimensional geometry, and random walks.
There is no textbook required for the course. Lecture notes will be made available from the course web page. Please visit the course webpage frequently for extra reading material. Recommended and reference books for each topic are listed below. Some of these books (as specified below) have been placed on reserve in the Wendt library.
One undergraduate course in algorithms (577) or complexity (520, 810, or 830) is required. If you are unsure of whether you have sufficient background for this course or not, please contact the instructor within the first week.
Grading & Evaluation
Homework and exams: There will be 3 homeworks and one take-home final (20% each), all to be done individually.
Course project: Projects are to be done in groups of two to three (or, by permission of the instructor, alone). Roughly mid-semester, each group should pick a topic of choice related to the course, get it approved from the instructor, and perform self-study of a few papers or chapters related to the topic. These will then be presented in class towards the end of the semester. Each group will be allotted a 30-min presentation time. The groups must also prepare a report of 4-8 pages related to their presentation which will be put online and available to the rest of the class as reference. The presentations and reports will be peer-evaluated (with input from the instructor). The class project counts towards 20% of your final score.