In the discrete case, surfaces are represented as piecewise linear triangle meshes. Since the Riemannian metric and the Gaussian curvature are discretized as the edge lengths and the angle deficits, the discrete Ricci flow can be defined as the deformation of edge lengths driven by the discrete curvature. We invented numerical algorithms to compute Riemannian metrics with prescribed Gaussian curvatures using discrete Ricci flow. We also showed broad applications using discrete Ricci flow in graphics, geometric modeling, and medical imaging, such as surface parameterization, surface matching, manifold splines, and construction of geometric structures on general surfaces.