Difference methods for the numerical solution of hyperbolic systems and singular perturbation problems