Data Driven Algorithm Design