This paper describes the history, objectives, structure, and current capabilities of the Stanford University Unstructured (SU 2) tool suite. This computational analysis and design software collection is being developed to solve complex, multi-physics analysis and optimization tasks using arbitrary unstructured meshes, and it has been designed so that it is easily extensible for the solution of Partial Differential Equation-based (PDE) problems not directly envisioned by the authors. At its core, SU 2 is an open-source collection of C++ software tools to discretize and solve problems described by PDEs and is able to solve PDE-constrained optimization problems, including optimal shape design. Although the toolset has been designed with Computational Fluid Dynamics (CFD) and aerodynamic shape optimization in mind, it has also been extended to treat other sets of governing equations including potential flow, electrodynamics, chemically reacting flows, and several others. In our experience, capabilities for computational analysis and optimization have improved considerably over the past two decades. However, the ability to integrate the resulting software packages into coupled multi-physics analysis and design optimization solvers has remained a challenge: the variety of approaches chosen for the independent components of the overall problem (flow solvers, adjoint solvers, optimizers, shape parameterization, shape deformation, mesh adaption, mesh deformation, etc) make it difficult to (a) expand the range of applicability to situations not originally envisioned, and (b) to reduce the overall burden of creating integrated applications. By leveraging well-established object-oriented software architectures (using C++) and by enabling a common interface for all the necessary components, SU 2 is able to remove these barriers for both the beginner and the seasoned analyst. In this paper we attempt to describe our efforts to develop SU 2 as an integrated platform. In some senses, the paper can also be used as a software reference manual for those who might be interested in modifying it to suit their own needs. We carefully describe the C++ framework and object hierarchy, the sets of equations that can be currently modeled by SU 2 , the available choices for numerical discretization, and conclude with a set of relevant validation and verification test cases that are included with the SU 2 distribution. We intend for SU 2 to remain open source and to serve as a starting point for new capabilities not included in SU 2 today, that will hopefully be contributed by users in both academic and industrial environments.