All textbooks that I know approach differential geometry in the following sequence: the classical subject of curves and surfaces, the general theory of manifolds, Riemannian manifolds. In fact most only treat one of the three topics. It was somewhat of a challenge therefore to produce a script that opened with foundational material, covered the least amount of manifold theory possible, and still was able get to interesting results in Riemannian geometry. I’m writing this before semester begins, so there is no guarantee we actually make it all the way through!
Do Carmo’s Differential Geometry of Curves and Surfaces (1976, 2016) is a classic. It has great illustrations and spends a lot of time examining special classes of surfaces. This gives the reader a good grounding in the sorts of problems that might be interesting in higher dimensions. Our Chapter 1 does not follow do Carmo as closely as it otherwise might because I wanted to motivate the curvature of curves through the osculating circle. The approach to normal curvature and Meusnier’s theorem is very much in line with do Carmo however.
Chapter 2 is a strange beast. Some amount of manifold theory is unavoidable to talk about Riemannian manifolds. But I didn’t want to just turn this course into “Analysis III Lite” and I wanted students who have already taken Analysis III to get something new out of it. Therefore I tried to write down a fresh approach that centers charts as the primary object of manifold theory. This is somewhat inspired by the physics approach to general relativity, where every observer has their own chart. I have no good references to give.
There after we move into what is a more-or-less standard approach to Riemannian geometry. I relied most heavily on John M Lee’s Introduction to Riemannian Manifolds (second edition, 2018). To name but one example, we followed his convention on the indices of the curvature coefficients. More generally, we followed his example by treating geodesics before curvature. I recommend this textbook to a student looking to reinforce their knowledge because of its strong explanations and willingness to use geometric intuitions.
The second textbook I leaned on for the later chapters was Petersen’s Riemannian Geometry (2005). I was particularly impressed with his handling of the symmetries of the Riemannian curvature. Prof Schmidt’s lecture notes from when he last ran this course, which I may have shared with you since they are in German, follows the path set by Petersen. However I would recommend this book only for a student who is already confident with Riemannian geometry, because it is rather brisk and it shies away from discussions. This means however it has time for further explorations (curvature bounds and symmetric spaces). A book that is similar in this respect but with a different set of extension topics (harmonic maps and Floer homology) is Jost’s Riemannian Geometry and Geometric Analysis (2017).
Speaking of geometric analysis, I mentioned in Chapter 4 geometric flows as an alternative method of straightening curves. I would recommend interested students check out Andrews et al Extrinsic Geometric Flows (2020). Already with the knowledge of curves and their curvatures from this course the second chapter of that book, on the curve shortening flow, is very readable.
Likewise I have a special spot in my heart for Sharpe’s Differential geometry: Cartan’s generalization of Klein’s Erlangen program. It really represents a completely different approach to geometry. Klein’s Erlangen program was an attempt to unify all the then-known geometries (euclidean, hyperbolic, elliptic, projective, etc) into one framework. The idea worked, but it never became as popular as the tensor calculus of the Italians, probably due to the influence of general relativity. What is interesting from the perspective of modern differential geometry is that many of the ‘old ideas’ that have been dropped or relegated to corollaries are first-class ideas in this other approach. For example, moving a tangent plane along a surface using euclidean motions is a very natural operations from this point of view, which is why we mentioned this book in Chapter 3.