6.046 Design and Analysis of Algorithms