Principles of Optimal Design: Modeling And Computation