A design optimization technique is presented which couples a computationally efficient Navier-Stokes code with a numerical optimization algorithm. The design method improves the aerodynamic performance of an airfoil subject to specified design objectives and constraints. Recent advances in computers and computational fluid dynamics have permitted the use of the Navier-Stokes equations in the design procedure to include the nonlinear, rotational, viscous physics of transonic flows. Using numerical optimization guarantees that a better design will be produced even with strict design constraints. The method is demonstrated with several examples at transonic flow conditions.