Lyapunov exponents are well-known characteristic numbers that describe growth rates of perturbations applied to a trajectory of a dynamical system in different state space directions. Covariant (or characteristic) Lyapunov vectors indicate these directions. Though the concept of these vectors has been known for a long time, they became practically computable only recently due to algorithms suggested by Ginelli et al. [Phys. Rev. Lett. 99, 2007, 130601] and by Wolfe and Samelson [Tellus 59A, 2007, 355]. In view of the great interest in covariant Lyapunov vectors and their wide range of potential applications, in this article we summarize the available information related to Lyapunov vectors and provide a detailed explanation of both the theoretical basics and numerical algorithms. We introduce the notion of adjoint covariant Lyapunov vectors. The angles between these vectors and the original covariant vectors are norm-independent and can be considered as characteristic numbers. Moreover, we present and study in detail an improved approach for computing covariant Lyapunov vectors. Also we describe how one can test for hyperbolicity of chaotic dynamics without explicitly computing covariant vectors.