Theory, Computation, and Design 2nd Edition