To a branched cover f:Σ ˜→Σ between closed surfaces one can associate a combinatorial datum given by the topological types of Σ ˜ and Σ, the degree d of f, the number n of branching points of f, and the n partitions of d given by the local degrees of f at the preimages of the branching points. This datum must satisfy the Riemann-Hurwitz condition plus some extra ones if either Σ or both Σ and Σ ˜ are non-orientable. A very old question posed by Hurwitz [14] in 1891 asks whether a combinatorial datum satisfying these necessary conditions is actually realizable (namely, associated to some existing f) or not (in which case it is called exceptional). Or, more generally, to count the number of realizations of the datum up to a natural equivalence relation. Many partial answers have been given to the Hurwitz problem over the time, but a complete solution is still missing. In this short course we will report on ancient and recent results and techniques employed to attack the question.