The course explores some of the various approaches to the theory of semigroups: algebraic, combinatorial, dynamical, geometric, language-theoretic, numerical or profinite. The specific subclasses of semigroups to be studied may include finite, inverse, numerical or profinite semigroups, as well as groups.