The goal of this course is to give an introduction into the modern study of smooth Gaussian fields, their extremal values and geometry of their level sets. We will start with the general theory of Gaussian fields in $R^n$ and on other metric spaces. We will discuss their regularity and other analytic properties paying special attention to the case of stationary fields. After that, we will look at the property of level and excursion sets. First, we will prove Kac-Rice formulas and use them to compute the expected number of roots for Gaussian processes and the expected volume of level sets in higher dimensions. We will also cover other applications of these formulas. After that, we will turn our attention to non-local quantities such as the number of connected components of level sets. In particular, we will study recent break-through results of Nazarov and Sodin as well as the recent progress in understanding the large scale behaviour of planar level sets and their conjectured connection with percolation theory.