As the name itself suggests, algebraic topology is a branch of mathematics which is halfway between algebra and geometry. The aim of this subject is to associate algebraic objects to topological spaces in such a way that the association is functorial and respects the shape of the space. This means that topological spaces which can be obtained by applying continuous transformations to a fixed one (formally, spaces with the same homotopy type) must have the same associated algebraic objects. One of the first and most important tool in this direction is the fundamental group, which is constructed starting from homotopy equivalence classes of loops in the space and then endowing the resulting set with an appropriate operation in such a wa...