In this course an introduction is given to geometric nonlinear control theory. In the first part of the course the basic concepts of nonlinear controllability and observability are treated with tools from coordinate-free analysis such as Lie brackets of vector fields. This is illustrated by simple examples from mechanical systems. Next issues around (partial) feedback linearization are addressed where we wish to transform the nonlinear control system into a linear one, in order to apply linear control techniques. Examples to tracking control will be included. The second part of the talk is concerned with a basic treatment of stability and stabilization of nonlinear control systems. Focus is on linearization and the use of Lyapunov functions. Dissipative systems are introduced, and the basic small-gain and passivity theorems are given in time-domain. In the third part of the talk we concentrate on nonlinear systems with physical structure, in particular port-Hamiltonian systems as arising from network modelling. The relation with dissipative systems are given, and control strategies based on the physical properties of the system are indicated.