We present an exact and efficient algorithm for computing a proper parametric representation of the intersection of two quadrics in three-dimensional real space given by implicit equations with rational coefficients. The output functions parameterizing the intersection in projective space are polynomial, whenever it is possible, which is the case when the intersection is not a smooth quartic (for example, a singular quartic, a cubic and a line, and two conics). Furthermore, the parameterization is near-optimal in the sense that the number of distinct square roots appearing in the coefficients of these functions is minimal, except in a small number of well-identified cases where there may be an extra square root. In addition, the algorithm is practical: a complete and efficient C++ implementation is described in Lazard et al. [Lazard, S., Peñaranda, L.M., Petitjean, S., 2006. Intersecting quadrics: An efficient and exact implementation. In: 20th ACM Symposium on Computational Geometry, 2004. Computational Geometry: Theory and Applications 35 (1–2), 74–99 (special issue)]. In Part I, we present an algorithm for computing a parameterization of the intersection of two arbitrary quadrics which we prove to be near-optimal in the generic, smooth quartic, case. Parts II and III treat the singular cases. We present in Part II the first classification of pencils of quadrics according to the real type of the intersection and we show how this classification can be used to efficiently determine the type of the real part of the intersection of two arbitrary quadrics. This classification is at the core of the design of our algorithms for computing near-optimal parameterizations of the real part of the intersection in all singular cases. We present these algorithms in Part III and give examples covering all the possible situations in terms of both the real type of intersection and the number and depth of square roots appearing in the coefficients.