1. Introduction. Throughout more than 50 years of existence, mixed integer linear programming (MIP) theory and practice have been significantly developed, and it is now an indispensable tool in business and engineering [68,94,104]. Two reasons for the success of MIP are linear programming (LP) based solvers and the modeling flexibility of MIP. We now have several extremely effective state-of-the-art solvers [82,69, 52,171] that incorporate many advanced techniques [1,2,25,23,92,112,24] and, since its early stages, MIP has been used to model a wide range of applications [44,45].While in many cases constructing valid MIP formulations is relatively straightforward, some care should be taken in this construction as certain formulation attributes can significantly reduce the effectiveness of LP-based solvers. Fortunately, constructing formulations that behave well with state-of-the-art solvers can usually be achieved by following simple guidelines described in standard textbooks. However, more advanced techniques can often perform significantly better than textbook formulations and are sometimes a necessity. The main objective of this survey is to summarize the state of the art of such formulation techniques for a wide range of problems. To keep the length of this survey under control, we concentrate on formulations for sets of a mixed integer nature that require both integer constrained and continuous variables. We hence purposefully place less emphasis on some related areas such as combinatorial optimization, quadratic and polynomial 0/1 optimization, and polyhedral approximations of convex sets. These topics are certainly areas of important and active research, so we cover them succinctly in section 12.