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 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. 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
Scribing: Each student is expected to scribe 3 lectures (in groups of 2). Please typeset your notes in LaTeX using this template. Scribe notes should be self-contained; any student missing class should be able to understand the lecture material from the notes. We expect a draft within 24 hours after the lecture, and the final version a week later. Scribing and class participation count towards 20% of your final score.
Here is a list of scribing assignments that will be updated throughout the semester (accessible only through the wisc.edu domain). Please email Shuchi to sign up for a particular lecture.
Homework and exams: There will be 3 homeworks and one take-home final (20% each), all to be done individually.