Coursera algorithms design and analysis class. The Stanford one.