We provide a self-contained introduction to random matrices. While some applications are mentioned, our main emphasis is on three different approaches to random matrix models: the Coulomb gas method and its interpretation in terms of algebraic geometry, loop equations and their solution using topological recursion, orthogonal polynomials and their relation with integrable systems. Each approach provides its own definition of the spectral curve, a geometric object which encodes all the properties of a model. We also introduce the two peripheral subjects of counting polygonal surfaces, and computing angular integrals.