This paper presents the development and verification of a discrete adjoint solver using algorithmic differentiation (AD). The computational cost of sensitivity evaluation using the adjoint method is largely independent of the number of design variables, making it attractive for optimization applications where the design variables are far more than objectives and constraints. To obtain the gradients of a single objective function or constraint with respect to many design variables, the nonlinear flow and the adjoint equations need to be solved once at every design cycle. This paper makes a detailed presentation of how AD is used to develop a discrete adjoint solver. The data flow diagrams of the nonlinear flow, linear and adjoint solvers are compared. Moreover, a comparison of convergence history of sensitivity, asymptotic rate of residual convergence and computational cost between the linear and adjoint solvers is also made. Two cases — the subsonic Durham turbine and transonic NASA Rotor 67 are studied in this paper. The results show that the adjoint solver has the same asymptotic rate of residual convergence and produces consistent convergence history of sensitivity as the linear solver, but the adjoint solver consumes more time and memory.