Discontinuous Galerkin methods for first-order hyperbolic problems