6.046 Design and Analysis Algorithms