Large-Scale PDE-Constrained Optimization