Algorithm Design In Uncertainty