SIE 640: Large-Scale Optimization