An algorithm is a well-defined procedure for carrying out some computational task. Typically the task is given, and the job of the algorithmist is to find such a procedure which is efficient, for example in terms of processing time and/or memory consumption. CS 224 is an advanced course in algorithm design, and topics we will cover include the word RAM model, data structures, amortization, online algorithms, linear programming, semidefinite programming, approximation algorithms, hashing, randomized algorithms, fast exponential time algorithms, graph algorithms, and computational geometry.This course is intended for both graduate students and advanced undergraduate students satisfying the below prerequisites.
CS 124 and comfort with discrete probability.
Homework solutions, scribe notes, and final projects must be typeset in LaTeX. If you are not familiar with LaTeX, see this introduction. The lecture and assignment pages also have templates to get you started.
There is no textbook for this class (we will rely on our scribe notes).