We review the main design techniques of state observer design for continuous-time dynamical systems, namely algorithms which reconstruct online the full information of a dynamical process on the basis of partially measured data. Starting from necessary conditions for the existence of such asymptotic observers, we classify the available methods depending on the detectability/observability assumptions they require. We show how each class of observer relies on transforming the system dynamics in a particular normal form which allows the design of an observer, and how each observability condition guarantees the invertibility of its associated transformation and the convergence of the observer. Finally, some implementation aspects and open problems are briefly discussed.