This paper surveys the most important algorithmic and computational results on the Vertex Coloring Problem (VCP) and its generalizations. The first part of the paper introduces the classical models for the VCP, and discusses how these models can be used and possibly strengthened to derive exact and heuristic algorithms for the problem. Computational results on the best performing algorithms proposed in the literature are reported. The second part of the paper is devoted to some generalizations of the problem, which are obtained by considering additional constraints [Bandwidth (Multi) Coloring Problem, Bounded Vertex Coloring Problem] or an objective function with a special structure (Weighted Vertex Coloring Problem). The extension of the models for the classical VCP to the considered problems and the best performing algorithms from the literature, as well as the corresponding computational results, are reported.