Offers a self-contained introduction to optimization on smooth manifolds. Covers both theoretical foundations and practical computational methods that students can apply to their own work. Introduces the theory of Riemannian geometry. Emphasizes those elements that are relevant for the construction of optimization algorithms (tensor fields, metrics, connections, geodesics, retractions, and transporters). Applies this geometric machinery to devise first- and second-order smooth optimization methods on generic Riemannian manifolds. Focuses on the development of practical computational techniques, with applications to robotics, computer vision, and machine learning.