Winding Number
Understanding the Algebraic Topology underlying the winding number of a closed curve in the plane.
Steve Trettel

The winding number of a closed curve $\gamma\colon\mathbb{S}^1\to\mathbb{R^2}$ about the origin is an
integer $w(\gamma)$ assigned to the curve that, well, measures how many times it winds around the origin!
This integer can be computed in various ways, but perhaps the most recognizable arises from complex analysis:
when $\gamma(t)$ is a smooth map into $\mathbb{C}$ avoiding the origin, then
$$w(\gamma)=\frac{1}{2\pi i}\oint_\gamma \frac{dz}{z}$$
At first glance this looks crazy: why should we ever expect this integral to be integer valued? And how in the world is its value sensitive to the number of times the curve wraps around the origin, but not to any other details of the curve itself? Initially this may be chalked up to the ‘magic of complex analysis’, but upon a deeper dive one realizes the magic is actually on loan to $\mathbb{C}$ from the world of differential forms, who in turn acquired this magic from algebraic topology: specifically, homology and cohomology.
Another familar definition of the winding number of a curve (which can be used in a greater generality, as it does not require differentiability) involves a choice of coordinates: if the closed curve $\gamma$ is represented as a $2\pi$periodic function $\mathbb{R}\to\mathbb{R}^2$ missing $0$, then we define $w(\gamma)$ by writing $\gamma$ in polar coordinates $\gamma(t)=(r(t),\theta(t))$, and then computing
$$w(\gamma):=\frac{\theta(2\pi)\theta(0)}{2\pi}$$
This definition raises its own host of questions:why is this invariant under pertubations of $\gamma$? Were in the world did polar coordinates come from? How important are the exact form of polar coordinates, or the $2\pi$ in the denominator to the overall picture? And finally  how can we possibly tell these two extremely different definitions give the same answers? Here again, the this simplebutcryptic formula is powered by the engine of algebraic topology, finding a way to grab onto the slippery concept of “the curve $\gamma$ up to homotopy” with an explicit, computable invariant.
The goal of this note is to explain the equivalence of these two perspectives, and to show how this birdseye view invites generalizations of the winding number to higher dimensions.
Topology of Maps $\mathbb{S}^1\to\mathbb{R}^2\smallsetminus {0}$
Topology is the art of blurring out the details of a problem that do not matter, while being careful not to blur so many details that the information you are interested in vanishes alongside them. In our case, we are interested in a map of the circle into the plane that misses the origin, so the set of objects we care about is the funtion space $C(\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0)$ of continuous maps of the circle into the punctured plane.
The details we do not care about are things like speed at which $\gamma$ traverses its image, or even the or small continuous deformations of $\gamma$ (of course, with it still avoiding the origin). This type of imprecision is exactly captured by the notion of homotopy: two functions $f,g\colon X\to Y$ are called homotopic if there is a continuous map $H\colon I\times X\to Y$ where $H(0,)=f$ and $H(1,)=g$.
If two curves $\gamma, \eta\in C(\mathbb{S^1},\mathbb{R}^2\smallsetminus 0)$ are homotopic, then one can continuously wiggle $\gamma$ (via a homotopy $\gamma_t:=H(t,)$) until it turns into $\eta$, all while avoiding the origin. We use this to define an equivalence relation on $C(\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0)$ where $\gamma\sim\eta$ if and only if they are homotopic. Blurring our vision to disregard continuous deformation is then rigorously encoded by taking the quotient space of $C$ with respect to this equivalence relation. We denote this space by $$[\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0]=C(\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0)/\sim$$ and denote the homotopy class of a map $\gamma$ as $[\gamma]\in[\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0]$.
This space represents a precise distillation of the information of a curve $\gamma$ in the punctured plane, up to continuous deformations, and so represents the abstract solution to our problem: all possible topological data of a curve $\gamma$ is encoded by its image $[\gamma]$ in this space. But how do we work with abstract data like $ [\gamma]$? This is what algebraic topology is all about.
Interlude: Algebraic Topology
Algebraic topology is a collection of techniques for assigning algebraic data (groups, rings, modules, etc) to topological spaces in a coherent and homotopy invariant way. Precisely, algebraic topology provides a collection of functors from the homotopy category to various algebraic categories: things that assign an algebraic gadget $g(X)$ to each space $X$, and an algebraic map $g(f)\colon g(X)\to g(Y)$ to each continuous map $f\colon X\to Y$. With the right tools, one may hope to extract the topological data stored in a homotopy class like $[\gamma]$ and unpack it as a collection of algebraic data, that is much easier to work with. In our case, the algebraic gadget involved is going to be the abelian group $\mathbb{Z}$, and the topological data of a homotopy class $[\gamma]$ will be encoded by an element of $\mathbb{Z}$, that is, a number!
Homotopy Groups
The first natural set of algebraic invariants to consider are the homotopy groups: given a (pointed,connected) topological space $X$ we can for each $n$ consider the set of (pointed) homotopy classes of maps $[\mathbb{S}^n,X]$. For each $n\geq 1$ this set naturally carries the structure of a group ($[\mathbb{S}^0,X]$ is just a set), and for each $n \geq 2$ this group is abelian (thus the choice of basepoint has no effect). With their group structure, we denote these sets of homotopy classes as $$\pi_n(X):=[\mathbb{S}^n,X]$$ We denote the collection of all homotopy groups as $\pi_\bullet(X)$.
The important property of these algebraic gadgets is how they let us turn homotopy classes of functions into algebraic data. Given two spaces $X,Y$ and a map $f\colon X\to Y$, we may use this map to take any element $[\eta]$ of $\pi_n(X)$ and produce an element of $\pi_n(Y) $ via composition: define $f_\star([\eta])\in\pi_n(Y)$ as $$f_\star([\eta])=[f\circ\eta]$$
That is, elements of $f\in C(X,Y)$ induce group homomorphisms $f_\star\in \mathrm{Hom}(\pi_n(X),\pi_n(Y))$.
It is directly visible from this definition that if $f\sim g$ are homotopic then $f_\star=g_\star$: thus, $\star$:
thus this assignment factors through the quotient by homotopy classes of maps and we get a map
$$\star\colon [X,Y]\to \mathrm{Hom}(\pi_n(X),\pi_n(Y))$$
As we can do this for each $n$, this actually results in an infinite sequence of group homomorphisms
$$\star\colon [X,Y]\to \mathrm{Hom}(\pi_\bullet(X),\pi_\bullet(Y))$$
$$[f]\mapsto f_\star:\begin{pmatrix}
\pi_0(X)\to\pi_0(Y)\
\pi_1(X)\to\pi_1(Y)\
\vdots\
\pi_n(X)\to\pi_n(Y)\
\vdots\
\end{pmatrix}
$$
The natural question here of course is, is this any good? Sure we can use $[f]$ to produce this collection of maps,
but do the resulting maps remember $[f]$?
Unfortunately this question is very hard (its false in general, but open in many interesting classes of spaces).
Nonetheless,
in the situations we will be interested in (winding number and some generalizations) things can be worked out
explicitly, and we will find $f_\star$ to be a *complete invariant*: that is, if $f_\star=g_\star$ then $[f]=[g]$.
Homology Groups
Enter the world of homology. To fix notation we write $H_n(X;R)$ for the $n^{th}$ singular homology group of $X$ with coefficients in the ring $R$. When $R=\mathbb{Z}$ we shorten the notation to $H_n(X)$, and when we wish to speak of the set of homologies for all $n$ we write $H_\bullet(X)$. When another homology theory (simplicial, de Rahm, etc) is known to agree with singular homology, we absue notation and use $H_n(X)$ to represent these as well, making the interpretation of elements clear from the context. Like for the homotopy groups, every continuous function $f\colon X\to Y$ induces a map on homology $$f_\star\colon H_\bullet(X)\to H_\bullet(X)$$ Thus, each element $f\in C(X,Y)$ is assigned to an element $f_\star\in \mathrm{Hom}(H_\bullet (X), H_\bullet (Y))$, defining a map $$\star\colon C(X,Y)\to\mathrm{Hom}(H_\bullet(X),H_\bullet(Y))$$ Since homology is a homotopy invariant, any two homotopic maps $f\sim g$ are assigned to the same group homomorphism $f_\star=g_\star$. Thus, this assignment $\star$ factors through the quotient by homotopy to a welldefined map
$$\overline{\star}\colon [X,Y]\to \mathrm{Hom}(H_\bullet(X),H_\bullet(Y))$$
Explicitly, this assignment sends a homotopy class $[f]$ to a sequence of group homomorphisms
$$[f]\mapsto f_\star\colon \begin{pmatrix}
H_0(X)\to H_0(Y)\
H_1(X)\to H_1(Y)\
\vdots\
H_n(X)\to H_n(Y)\
\vdots\
\end{pmatrix}$$
Though, since if $X,Y$ are manifolds of dimension $\leq N$ then all homologies above $N$ are trivial, so the induced maps beyond some finite stage are all the zero map from the trivial group to itself. This situation leaves us with the same question to answer: we’ve managed to use homology as a tool to assign a homotopy class $[f]$ to a (finite) list of group homomorphisms. How much information have we lost in doing so? Like the homotopy case, this is a difficult question in general, but for the case of winding number the algebraic data gleaned from homology provides a complete homotopy invariant.
The Algebraic Topology of $[\mathbb{S}^1,\mathbb{R}^2\smallsetminus 0]$
In our particular case, we can work out both of these approaches and see that they lead directly to the two familiar definitions of winding number: homotopy groups abstract the ‘winding number is a lift’ computation, and homology abstracts the ‘winding number is a path integral’ computation.
Winding Number Via Homotopy
The homotopy groups of the circle are very simple:
$\pi_1(\mathbb{S}^1)=\mathbb{Z}$ and for $n\geq 2$, $\pi_n(\mathbb{S}^1)=0$ (to prove this, recall that for $n\geq2$
homotopy groups are invariant under taking covers: and since the universal cover of $\mathbb{S}^1$ is contractible,
all its higher homotopy vanishes). Since $\mathbb{R}^2\smallsetminus 0$ is homotopy equivalent to the circle, it
has the same homotopy groups: $\mathbb{Z}$ in dimension $1$ and $0$ above that. Thus, the algebraic data carried by
a homotopy class of closed curve $[\gamma]$ is the sequence of homomorphisms
$$[\gamma]\mapsto\gamma_\star\colon\begin{pmatrix}
\pi_1(\mathbb{S}^1)\to \pi_1(\mathbb{R}^2\smallsetminus 0)\
0\to 0\
\vdots\
0\to 0\
\vdots
\end{pmatrix}$$
This collection of maps is a *complete homotopy invariant*, so the entirety of the topological information carried
by $[\gamma]$ is recorded by the maps $\gamma_\star$. But  all but one of these maps is the zero map between
trivial groups! Thus, the entirety of the topological data of $[\gamma]$ is carried by
$$\gamma_\star\colon\pi_1(\mathbb{S}^1)\to \pi_1(\mathbb{R}^2\smallsetminus 0)$$
Since each of these groups is abstractly isomorphic to $\mathbb{Z}$, and $\gamma_\star$ is a group homomorphism,
after choosing identifications $\gamma_\star$ becomes an endomorphism of $\mathbb{Z}$: such maps are easily
classified, every $\phi\in\mathrm{End}(\mathbb{Z})$ is of the form $\phi(x)=nx$ for some $n$.
That is, the topological data of $[\gamma]$ is fully characterized by a single integer $n$.
Getting Access to this Integer
The only remaining problem is a means of actually computing this integer stored by $\pi_1$. While each of $\pi_1(\mathbb{S}^1)$, $\pi_1(\mathbb{R}^2\smallsetminus 0)$ are abstractly isomorphic to the integers their actual elements are defined as homotopy classes: which are exactly the kind of thing we are trying to avoid working with! So, we need to do some more algebraic topology to recover this data in a more userfriendly means. Since we are working only with $\pi_1$ here, the tool for the job is covering spaces: these let us replace slippery concepts like homotopy classes with concrete deck transformations: given a covering space $p\colon\widetilde{X}\to X$ the deck group of $p$ is the set of selfhomeomorphisms of $\widetilde{X}$ which project to the identity under $p$: $$\mathrm{deck}(\widetilde{X}\to X)=\{\phi\colon\widetilde{X}\to\widetilde{X}\mid p\phi=\mathrm{id}_X\}$$
When $\widetilde{X}$ is the universal covering space of $X$, then we have a natural identification $$\mathrm{deck}(\widetilde{X}\to X)\cong\pi_1(X)$$ where a deck transformation $\phi$ with $\phi(x)=y$ is sent to the loop $p\gamma$ for $\gamma$ any path connecting $x$ to $y$ in $\widetilde{X}$.
To begin our computation, we first choose a universal cover of $\mathbb{R}^2\smallsetminus 0$ so that we can replace its homotopy group with the deck group. The simplest choice is better known as polar coordinates: $$p\colon \mathbb{R}^2\to \mathbb{R}^2\smallsetminus 0$$ $$(r,\theta)\mapsto (r\cos\theta,r\sin\theta)$$
But before we can put this to use, we have to overcome a slight difficulty: our loop $\gamma\colon\mathbb{S} ^1\to\mathbb{R}^2\smallsetminus 0$ does not necessarily lift to the universal cover, as $\gamma$ only satisfies the lifting criterion if it sends $\mathbb{S}^1$ to the trivial element of $\pi_1(\mathbb{R}^2\smallsetminus 0)$. (And, this only occurs if $\gamma$ does not wind around the origin!)
To fix this, we must also choose a universal cover of $\mathbb{S}^1$. Again, the simplest such choice is already wellknown to us from calculus as a parameterization of the unit circle: $$c\colon \mathbb{R}\to\mathbb{S}^1$$ $$t\mapsto (\cos t,\sin t)$$ Now, we may lift the map $\gamma$ to a map $\widetilde{\gamma}$ between the universal covers (Such a lift is usually called ‘parameterizing the curve in polar coordinates’). $$\widetilde{\gamma}\colon\mathbb{R}\to\mathbb{R}^2$$ $$t\mapsto (r(t),\theta(t))$$
This map, together with the covers and the original $\gamma$ form a commuting square: draw this
Because $c(0)=c(2\pi)$ in the covering of the circle, $\gamma(c(0))=\gamma(c(2\pi))$, and thus by commutativity, $p\widetilde{\gamma}{0}=p\widetilde{\gamma}(2\pi)$. This means that $\widetilde{\gamma}(0)$ and $\widetilde{\gamma}(2\pi)$ both lie above the same point of $\mathbb{R}^2\smallsetminus 0$, and thus there is a some deck transformation $\phi\in\mathrm{deck}(\mathbb{R} ^2\to\mathbb{R}^2\smallsetminus 0)$ relating them.
As the deck transformations of $(r,\theta)\mapsto (r\cos\theta,r\sin\theta)$ are all maps of the form $$(r,\theta)\mapsto (r,\theta +2\pi n)=(r,\theta)+2\pi(0,n)$$ we see that there must be some $n$ such that $$\widetilde{\gamma}(2\pi)=\phi\widetilde{\gamma}{0}=\widetilde{\gamma}(0)+2\pi(0,n)$$
This integer $n$ represents the deck transformation encoded by $\widetilde{\gamma}$, which in turn represents the induced homomorphism $\gamma_\star\colon\pi_1(\mathbb{S}^1)\to\pi_1(\mathbb{R}^2\smallsetminus 0)$, which itself represents the entirety of the topological data of the homotopy class $[\gamma]$ in $[\mathbb{S}^1,\mathbb{R} ^2\smallsetminus 0]$. “Solving for $n$”, we may recover this topological data directly from the lift:
$$\frac{\widetilde{\gamma}(2\pi)\widetilde{\gamma}(0)}{2\pi}=(0,n)$$ Which, recalling that $\widetilde{\gamma}(t)=(r(t),\theta(t))$ implies $$n=w(\gamma)=\frac{\theta(2\pi)\theta(0)}{2\pi}$$
Winding Number Via Homology
For convenience, we will work with the reduced homology groups of the spaces in question (as the zeroth homology plays no essential role.) The homological story starts similar to that of homotopy groups: the zeroth homology of $\mathbb{S}^1$ is zero as the circle is connected, the first homology is $\mathbb{Z}$ (as its oriented, and 1dimensional), and its higher homologies are zero as they are larger in dimension than the space itself. And, as $\mathbb{R}^2\smallsetminus 0$ deformation retracts onto the circle, it has the same sequene of homology groups.
Thus given an immersion $\gamma$ of the circle into the punctured plane, capturing the homotopy information of $[\gamma]$ amounts to but a single nontrivial homomorphism between first the first homologies:
$$[\gamma]\mapsto \gamma_\star\colon \begin{pmatrix}
0\to 0\
H_1(\mathbb{S}^1)\to H_1(\mathbb{R}^2\smallsetminus 0)\
0\to 0\
\vdots\
0\to 0\
\vdots\
\end{pmatrix}$$
As the only nonzero map, $\gamma_\star$ on first homology stores all of the topological data of $[\gamma]$.
Like in the case of homotopy, if we choose identifications of $H_1(\mathbb{S}^1)$ and $H_1(\mathbb{R}
^2\smallsetminus 0)$ with $\mathbb{Z}$ (in homology, this is precisely the same as choosing an orientation of each),
then $f_\star$ is an endomorphism of $\mathbb{Z}$, which is naturally identified with an integer.
The problem of course is the same  how are we to access this integer associated to the map!
More directly, if we had chosen generators $g_1,g_2$ of $H_1(\mathbb{S}^1)$ and $H_1(\mathbb{R}^2\smallsetminus 0)$,
respectively we could compute $\gamma_\star$ of the generator of the domain, and decompose this as some integer number of copies of
the generator of the target.
$$\gamma_\star(g_1)\in H_1(\mathbb{R}^2\smallsetminus 0)=\mathbb{Z}g_2$$ $$\implies \gamma_\star(g_1)=g_2+g_2+\cdots g_2=ng_2$$
This sounds good in theory, but the objects involved are still too abstract, and are defined as equivalence classes. We need a tool for converting abstract groups like $H_1$ to concrete things: before the solution was covering spaces, now the solution is cohomology.
Interlude: Cohomology and Computation
The definition of homology is given by some complex of chains $\cdots\to C_n\to C_{n1}\to\cdots$ with boundary maps $\partial$, and the computes the homology of this complex $H_\bullet = \ker\partial/\mathrm{im}\partial$. Cohomology is a dualization of this at the level of chains: that is, we build the the dual chain complex $$\cdots \leftarrow \mathrm{Hom}(C_n,R)\leftarrow \mathrm{Hom}(C_{n1},R)\leftarrow\cdots$$ with the dual boundary maps $\delta$ defined so that if $f\colon C_{n1}\to R$ then $\delta f\colon C_n\to R$ is the map $\delta f(c):=f(\partial c)$. The *homology* of this *co*chain complex is the *cohomology* of the underlying space $H^\bullet = \ker\delta/\mathrm {im}\delta$. Phew!
What does this all mean for us in practice? Well, we are interested in computing the invariant stored by
$\gamma_\star$ as a map between two first homologies. The elements of these homology groups are (equivalence
classes of) chains, and an element of cohomology is an equivalence class of functions on chains.
Thus, an element $\alpha\in H^n$ of cohomolgy determines a map $\alpha\colon H_n\to R$ as follows:
if $\eta$ is a homology class, choose a representation $\eta=[c]$ for some chain $c\in C_n$, and also choose a
representation $\alpha = [\phi]$ of the cohomology class by some function $\phi\colon C_n\to R$. Then we define
$$\alpha(\eta)=[\phi]\left([c]\right)=\phi(c)$$
This requires some welldefinedness checks (choosing different representatives does not affect the final value, etc)
but the important part for our overall story is we are able to take some abstract thing (a homology class) and
compute a very concrete thing (an element of the ring $R$) using a cohomology class.
While we will need the flexibility of general coefficients shortly, let’s discuss the situation over $\mathbb{Z}$. Since $H_1(\mathbb{R}^2\smallsetminus 0)\cong \mathbb{Z}$ is onedimensional, if we could find a cohomology class $\alpha\in H^1(\mathbb{R}^2\smallsetminus 0)$ which sets up an isomorphism $$\alpha\colon H_1(\mathbb{R}^2\smallsetminus 0)\to\mathbb{Z}$$ (that is, $\alpha$ sends a generator of $H_1(\mathbb{R}^2\smallsetminus 0)$ to $1$) Then we could directly implement the program sketched above, and remove the difficulttodealwith equivalence classes from the story at the same time! More precisely, we would know by our abstract reasoning that if we choose a fundamental class $\eta$ for $H_1(\mathbb{S} ^1)$, apply $\gamma_\star$, and then apply the isomorphism given by the cohomology class $\alpha$, we get the topological invariant
$$\alpha(\gamma_\star(\eta))=\alpha(n g_2)=n\alpha(g_2)=n$$
But, by the definition of the action of $\alpha$ on homology, we can pick an explicit representative $\phi$ with $\alpha =[\phi]$ and an explicit chain $C$ representing the fundamental class $[C]=\eta$, where we can then compute $\alpha\gamma_\star$ as
$$\phi(\gamma(C))=[\phi]\left(\gamma_\star([C])\right)=\alpha(\gamma_\star(\eta))=n$$
This final equation is defined in terms of three concrete things: an actual choice of chain representing a fundamental class, the actual map $\gamma$, and an actual linear map $\phi$ on chains: no more equivalence classes in sight! So, if we know how to compute with $\phi$, we can directly access our hidden integer invariant.
Clearly, we will have little to no hope doing this explicitly in singular homology, as the cochain complex is full of verydifficulttodescribe things. But when things are smooth we can switch to a much easierto understand theory of cohomology, de Rham cohomology
De Rham Cohomology
The de Rham complex is populated by differential forms of each degree on the base smooth manifold $M$, and the coboundary map is the exterior derivative:
$$\cdots\leftarrow \Omega^{n+1}(M)\leftarrow\Omega^{n}(M)\leftarrow\cdots$$
Differential forms are smooth, real valued multilinear functions on the tangent space, and so to work with them we necessarily have to take coefficients in $\mathbb{R}$ (which will not be an issue, since $\mathbb{Z}\subset \mathbb{R}$ we will be able to recover our integer invariant by restriction at the end of the day). A differential form $\omega$ is called closed if $d\omega=0$, and exact if $\omega=d\theta$ for some othe form $\theta$. Thus, the homology of the de Rham complex records the closed forms modulo the addition of exact forms. This is a very different cohomology theory than the one’s we are used to involving simplices, but like many algebraic topological invariants, it turns out to be just another way of accessing the same abstract data:
de Rham’s Theorem The homology of the de Rham complex of a smooth manifold agrees with the homology of the singular cochain complex.
Thus, we can use differential forms to compute the homological invariant following the outline above, with one big if: how do we know there actually are any nonzero cohomology classes to use to set up an isomorphism? This is just a computation: $H^1(\mathbb{R}^2\smallsetminus 0;\mathbb{R})\cong H^1(\mathbb{S}^1;\mathbb{R})$ as the two spaces are homotopy equivalent, and $H^1(\mathbb{S}^1;\mathbb{R})\cong H_0(\mathbb{S}^1;\mathbb{R})$ by Poincare duality: finally $H_0(\mathbb{S}^1;\mathbb{R})\cong\mathbb{R}$ because it is connected: thus, there is a 1dimensional space of closed 1forms on $\mathbb{R}^2\smallsetminus 0$ after modding out by exact ones.
Indeed, to construct such a form, we can take inspiration from the deformation retraction $\mathbb{R}^2\smallsetminus 0\to \mathbb{S}^1$ realizing the homotopy equivalence between these two spaces. The circle has a 1dimensional space of closedmodexact 1forms (these are top dimensional forms for the circle, so they are possible volume forms). A cannonical choice is $d\theta$, which can be explicitly defined as the form whose pullback under the universal covering $\mathbb{R}\to\mathbb{S}^1$ is the differential of the identity function $\mathrm{id}\colon \mathbb{R}\to\mathbb{R}$ sending $\theta\in\mathbb{R}$ to $\theta$.
It’s easy to verify that in the $(x,y)$ coordinates of the plane, this form $d\theta$ is the restriction of $d\theta = xdy  ydx$ to the unit circle via a quick computation: under the trigonometric parameterization $T\colon\theta\mapsto (\cos\theta,\sin\theta)=(x,y)$, this pulls back to $$T^\star(xdyydx)=(\cos\theta)d(\sin\theta)(\sin\theta)d(\cos\theta)$$ $$=\cos\theta\cos\theta d\theta \sin\theta (\sin\theta)d\theta$$ $$=(\cos^2\theta+\sin^2\theta)d\theta=d\theta$$
Now, we need to transport this form, which generates $H^1(\mathbb{S}^1)$ to a form which generates $H^1(\mathbb{R}^2\smallsetminus 0)$. The isomorphism between these spaces is induced by the homotopy equivalence arising from the deformation retract $$\pi\colon\mathbb{R}^2\smallsetminus 0\to \mathbb{S}^1\hspace{1cm} (x,y)\mapsto \frac{(x,y)}{\sqrt{x^2+y^2}}.$$ Thus, a generator of $H^1(\mathbb{R}^2\smallsetminus 0)$ is given by $\pi^\star(xdyydx)$ (this computation is much easier in polar coordinates, but to avoid any potential confusion involving coordinates being a covering space; I’ll do it with $(x,y)$ here). $$\pi^\star(d\theta)=\pi^\star(xdyydx)=$$ $$\left(\frac{x}{\sqrt{x^2+y^2}}\right)d\left(\frac{y}{\sqrt{x^2+y^2}}\right)\left(\frac{y}{\sqrt{x^2+y^2}}\right)d\left(\frac{x}{\sqrt{x^2+y^2}}\right)$$ Where $d(y/\sqrt{x^2+y^2})$ is computed with the quotient rule: $$d\left(\frac{y}{\sqrt{x^2+y^2}}\right)=\frac{\sqrt{x^2+y^2}dyyd(\sqrt{x^2+y^2})}{x^2+y^2}$$ $$=\frac{\sqrt{x^2+y^2}dyy\frac{xdx+ydy}{\sqrt{x^2+y^2}}}{x^2+y^2}=x\frac{xdyydx}{(x^2+y^2)^{3/2}}$$ Running the analogous computation of $d(x/\sqrt{x^2+y^2})$ and substituting in, we get $$\pi^\star(d\theta)= \left(\frac{x}{\sqrt{x^2+y^2}}\right)\left(x\frac{xdyydx}{(x^2+y^2)^{3/2}}\right)\left(\frac{y}{\sqrt{x^2+y^2}}\right)\left(y\frac{ydxxdy}{(x^2+y^2)^{3/2}}\right)$$ $$=\frac{x^2}{(x^2+y^2)^2}(xdyydx)+\frac{y^2}{(x^2+y^2)^2}(xdyydx)$$ $$=\frac{xdyydx}{x^2+y^2}$$
Thus, this form is closed but not exact on $\mathbb{R}^2\smallsetminus 0$ (whcih we can also verify directly: we may compute its exterior derivative to see we get zero, but then compute its integral over the circle and see we get $2\pi$, which is not zero, even though the circle has no boundary. Thus, it cannot be the derivative of a function by stokes theorem.) Treating this form as a representative of a cohomology class, this realizes an isomorphism from $H_1(\mathbb{R}^2\smallsetminus 0;\mathbb{R})$ to $\mathbb{R}$. However, as at the end of the day we would like to recover a fact about homology with integer coefficients, so we need to do some normalization. We would like to make it so that the cannonical generator of $H_1(\mathbb{R}^2\smallsetminus 0)$, that is, the unit circle, is sent to $1$. But right now, this is sent to $$\int_{\mathbb{S}^1}\frac{xdyydx}{x^2+y^2}=\int_{\mathbb{S}^1}{xdyydx}=\int_{\mathbb{S}^1}d\theta =\mathrm{vol}(\mathbb{S}^1)=2\pi$$ All we need to do is divide by this number, producing a new 1form (still closed but not exact) which will set up an isomorphism between homology with coefficients over $\mathbb{R}$, that restricts to an isomorphism over $\mathbb{Z}$. To get some notation into this coordinateheavy game, call this thing $$\phi=\frac{1}{2\pi}\frac{xdyydx}{x^2+y^2}$$
Thus, finally our means of computing the integer stored by $\gamma_\star$ explicity is made available to us! Given a map $$\gamma\colon\mathbb{S}^1\to \mathbb{R}^2\smallsetminus 0$$ We take $\mathbb{S}^1$ itself (with our choice of orientation) as a boundaryless chain representing the fundamental class in $H_1(\mathbb{S}^1)$ and compute the winding number of $\gamma$ via $$\phi(\gamma(\mathbb{S}^1))=\int_\mathbb{\gamma(\mathbb{S}^1)}\phi=n=w(\gamma)$$
The last step to make contact with the formula given in the introduction is to relate $\phi$ to the form $\frac{1}{2\pi i}\frac{dz}{z}$. A confusing thing when first dealing with homology and cohomology: these two things are not equal or even scalar multiples of one another, but simply cohomologous: they are two representatives of the same cohomology class, and so give the same value when integrated against any chain representing a homology class.
To see this, we begin by writing out $\frac{dz}{z}$: $$\frac{dz}{z}=\frac{d(x+iy)}{x+iy}=\frac{(xiy)d(x+iy)}{x^2+y^2}$$ $$=\frac{(xiy)(dx+idy)}{x^2+y^2}=\frac{xdx+ydy}{x^2+y^2}+i\frac{xdyydx}{x^2+y^2}$$ Thus, dividng by $2\pi i$, $$\frac{1}{2\pi i}\frac{dz}{z}=\frac{1}{2\pi i}\frac{xdx+ydy}{x^2+y^2}+\frac{1}{2\pi}\frac{xdyydx}{x^2+y^2}$$ $$=\frac{1}{2\pi i}\frac{xdx+ydy}{x^2+y^2}+\phi$$
This form is in the same cohomology class as $\phi$ since the additional term, $\frac{1}{2\pi i}\frac{xdx+ydy}{x^2+y^2}$ is exact! To show this explicitly we just need to construct a real valued function on the punctured plane for which this is the derivative: but this is straightforward using the chain rule. $$\frac{xdx+ydy}{x^2+y^2}=\frac{1}{2}\frac{d(x^2+y^2)}{x^2+y^2}=\frac{1}{2}d\ln(x^2+y^2)$$
Thus we see that
$$\frac{1}{2\pi i}\frac{dz}{z}=\frac{1}{4\pi i}d\ln(x^2+y^2)+\phi$$
and so, integrating over the boundaryless immersed manifold $\gamma(\mathbb{S}^1)$ yields
$$\int_{\gamma(\mathbb{S}^1)}\frac{1}{2\pi i}\frac{dz}{z}=\int_{\gamma(\mathbb{S}^1)}\frac{1}{4\pi i}d\ln(x^2+y^2)+\phi$$ $$=\frac{1}{4\pi i}\int_{\gamma(\mathbb{S}^1)}d\ln(x^2+y^2)+\int_{\gamma(\mathbb{S}^1)}\phi$$ $$=\frac{1}{4\pi i}\int_{\partial \gamma(\mathbb{S}^1)}\ln(x^2+y^2)+\int_{\gamma(\mathbb{S}^1)}\phi$$ $$=\frac{1}{4\pi i}\int_{\varnothing}\ln(x^2+y^2)+\int_{\gamma(\mathbb{S}^1)}\phi$$ $$=0+\int_{\gamma(\mathbb{S}^1)}\phi$$ $$=\int_{\gamma(\mathbb{S}^1)}\phi$$ $$=w(\gamma)$$
Equivalence of these Definitions
(We can prove directly these two definitions give the same answer, by setting up an isomorphism between how $\gamma_\star$ acts on the fundamental group and how it acts on first homology. This is basically a “coincidence of low dimensions”: in more complicated scenarios homotopy and homology won’t carry the same information (in general, neither will carry the entire homotopy type of the map), and homotopy groups will be impossible to compute….)
What definition should we generalize?
(In higher dimensions the homotopy type of a general map can be very complicated, and the algebraic topological invariants more difficult to work with. In particular, for punctured $\mathbb{R}^n$ never again will the list of homotopy groups end at $n=1$ so the probelm reduces to covering space theory: indeed never again will the list of homotopy groups even be finite! Thus if we want to computationally extract some information about the homotopy class of the map, we should turn to homology. It turns out this homology story generalizes nicely especially when the homology in the correct dimension is 1dimensional. This happens in cases where “winding number” is a good way to think about homotopy classes: namely, whenever there’s a deformation retract of the target onto a space of the same dimension as the thing being immersed….but this story is for when I have more time) )