http://math.mit.edu/~rigollet/courses/S997_S15.html