From classifying maps to numbers you can compute
The previous guide ended with a clean but abstract theorem: a rank-k real vector bundle over a reasonable space X is the same data as a homotopy class of maps X -> BO(k) into a classifying space, and the universal model for that space is the infinite Grassmannian Gr_k(R^infinity). That is satisfying in principle but useless at the desk: nobody computes a homotopy class of maps by hand. A characteristic class is the trick that turns this abstract classification into arithmetic. The idea is to fix, once and for all, a cohomology class on the universal space, and then pull it back along the classifying map of any bundle you meet.
Make that precise. Suppose c is a fixed element of H^*(BG) for the relevant structure group G, and a bundle E -> X has classifying map f: X -> BG. Then c(E) := f^*(c) is a class in H^*(X). Because f is determined up to homotopy and pullback in cohomology is a homotopy invariant, c(E) depends only on the isomorphism class of E — never on the gluing charts, the connection, or any choice you made. This is the whole engine: every characteristic class is the pullback of a universal class, and so it is automatically natural, meaning c(g^*E) = g^*(c(E)) for any map g. Computing H^*(BG) once hands you a complete catalogue of invariants for all bundles at all spaces simultaneously.
Stiefel-Whitney classes: the Z/2 face of a real bundle
For a real bundle the cleanest invariants live in mod-2 cohomology, where orientation troubles vanish because plus and minus agree. The total Stiefel-Whitney class of a rank-k real bundle E is w(E) = 1 + w_1(E) + w_2(E) + ... + w_k(E), where w_i(E) lies in H^i(X; Z/2). Rather than build them from a formula, it is cleaner and more honest to pin them down by the axioms they uniquely satisfy: this is exactly the move you saw used to characterize the determinant or the Levi-Civita connection — list the properties, then prove only one object has them all.
AXIOMS for Stiefel-Whitney classes w_i(E) in H^i(X; Z/2): (1) Rank w_0 = 1, and w_i(E) = 0 for i > rank(E) (2) Naturality w(f^* E) = f^*( w(E) ) (pullback compatible) (3) Whitney sum w(E (+) F) = w(E) . w(F) (cup product) (4) Normalization w_1( tautological line on RP^1 ) =/= 0 Whitney sum spelled out by degree, with E (+) F : w_1 = w_1(E) + w_1(F) w_2 = w_2(E) + w_1(E) w_1(F) + w_2(F) ... (collect the total products degree by degree)
The third axiom is the workhorse, the Whitney sum formula w(E (+) F) = w(E) . w(F), where the product is the cup product in cohomology. It says the total class is multiplicative under direct sum, which is what makes computation tractable: split a hard bundle into a sum of pieces you understand, multiply, and read off the degrees. The lowest class w_1(E) in H^1(X; Z/2) has a vivid meaning — it is the obstruction to orienting E, and it vanishes exactly when E is orientable. The top class w_k of the tangent bundle relates to the Euler characteristic mod 2.
Here is the canonical example to keep in your pocket. The Klein bottle and the Mobius band both have w_1 of their tangent (or normal) line bundle nonzero — that single nonzero Z/2 class is the algebraic fingerprint of non-orientability. Concretely, the tautological line bundle over the projective line RP^1 has w_1 equal to the generator of H^1(RP^1; Z/2) = Z/2, which is exactly the normalization axiom; this is the Mobius band, the simplest twisted bundle there is, and its single bit of Stiefel-Whitney data says "I do not untwist."
Chern classes: the integral invariants of a complex bundle
Complex bundles are better behaved than real ones, because a complex vector space carries a canonical orientation, so the orientation troubles that forced Stiefel-Whitney classes down into Z/2 simply do not arise. The total Chern class of a rank-n complex bundle E is c(E) = 1 + c_1(E) + ... + c_n(E) with c_i(E) in H^{2i}(X; Z) — note the classes sit in even degrees and carry honest integer coefficients. They obey the same family of axioms: naturality, the Whitney sum formula c(E (+) F) = c(E) . c(F), vanishing above the rank, and a normalization fixing c_1 of the tautological line bundle over the complex projective line CP^1 to be the generator of H^2(CP^1; Z).
The first Chern class c_1 is the star of the show, and you have met its incarnations before. For a complex line bundle, c_1 in H^2(X; Z) is a complete invariant: line bundles up to isomorphism are classified exactly by c_1, so the map L -> c_1(L) is a group isomorphism from the Picard group of line bundles to H^2(X; Z). On a complex manifold a holomorphic line bundle carries the same c_1, which is why the degree of a line bundle on a Riemann surface is just c_1 integrated over the surface. The same integer reappears as a winding number, a magnetic charge, and the degree of a divisor — characteristic classes are where all these stories meet.
Pontryagin classes and the splitting principle
What about a real bundle when you do want integer coefficients, not just Z/2? The move is to complexify: given a real bundle E, form E (x) C, a complex bundle of the same rank, and read off its Chern classes. The Pontryagin class is defined by p_i(E) = (-1)^i c_{2i}(E (x) C) in H^{4i}(X; Z). The odd Chern classes of a complexification are 2-torsion, so they are discarded, which is why Pontryagin classes live in degrees that are multiples of 4 and capture the integral information that survives complexification. They are the natural real-bundle invariants for orientation-sensitive questions — signatures, exotic spheres, and the index theorem all speak in Pontryagin numbers.
Now the proof technique that makes all of this manageable: the splitting principle. It says that for any bundle E -> X there is a space Y and a map p: Y -> X such that the pullback p^*: H^*(X) -> H^*(Y) is injective and the pulled-back bundle p^*E splits as a direct sum of line bundles. The payoff is enormous. Because p^* is injective, any identity you prove in H^*(Y) after splitting descends back to X; and because every bundle becomes a sum of line bundles upstairs, you only ever have to understand line bundles. The total class factors as a product of (1 + x_i), where the x_i are the first classes of the line summands — the Chern roots.
With Chern roots the formulas become elementary symmetric functions and the bookkeeping evaporates. If E has Chern roots x_1, ..., x_n then c(E) = product of (1 + x_i), so c_1 = sum of x_i, c_2 = sum over i<j of x_i x_j, and c_n = product of x_i — exactly the elementary symmetric polynomials. The Whitney sum formula is then nothing but "the roots of a direct sum are the union of the roots," which is obvious. The splitting principle is the reason you can derive the Chern character, the Todd class, and every index-theory formula by pretending all bundles are sums of line bundles, even though they are not.
Two roads to the same class: topology and curvature
We built these classes topologically — by pulling back universal classes from a classifying space, using nothing but homotopy and cohomology. But in the bundles-and-connections track you saw a completely different construction: Chern-Weil theory, where you put a connection on the bundle, take its curvature form Omega, feed Omega into an invariant polynomial, and get a closed differential form whose de Rham cohomology class is independent of the connection. For example, the trace of Omega gives a representative of c_1, and det(I + (i/2pi) Omega) gives the total Chern class.
The deep and genuinely surprising fact is that these two roads land at the same place: the Chern-Weil form built from any connection's curvature represents, in real cohomology, exactly the topological Chern class pulled back from BU(n). One road is pure topology and works over any coefficient ring; the other is differential geometry and produces an explicit form you can integrate. This is the bridge promised by the rung's title — topology measures geometry. The curvature is geometric data that depends on the metric and connection, yet the cohomology class it lands in is a topological invariant that forgets all of that.
Where this points next
Step back and see what you now hold. You can attach to any bundle a string of cohomology classes — Stiefel-Whitney over Z/2, Chern over Z for complex bundles, Pontryagin over Z for real ones — and these classes are natural, multiplicative under Whitney sum, computable through the splitting principle, and (in real cohomology) representable by curvature. They turn the abstract classification of the last guide into honest arithmetic, and they let you prove a bundle is nontrivial by exhibiting a single nonzero number.
The natural next question is structural: instead of one bundle at a time, organize all bundles over X into a single algebraic object. That is the subject of the next guide, topological K-theory, where direct sum and tensor product of bundles become addition and multiplication, and the Grothendieck group K(X) packages every bundle at once. Characteristic classes will reappear there as ring homomorphisms out of K(X) — the total Chern class and especially the Chern character become the dictionary between K-theory and ordinary cohomology, the exact tool the index theorem will need at the end of this rung.