We study the distributed (Delta + 1)-vertex-coloring and (2 Delta - 1)-edge-coloring problems. These problems are among the most important and intensively studied problems in distributed computing. Despite very intensive research in the last 30 years, no deterministic algorithms for these problems with sublinear (in Delta) time have been known so far. Moreover, for more restricted scenarios and some related problems there are lower bounds of ohm(Delta) [Goos et al. 2014; Hirvonen and Suomela 2012; Kuhn and Wattenhofer 2006; Szegedy and Vishwanathan 1993]. The question of the possibility to devise algorithms that overcome this challenging barrier is one of the most fundamental questions in distributed symmetry breaking [Barenboim and Elkin 2009, 2011; Goos et al. 2014; Hirvonen and Suomela 2012; Kuhn 2009; Panconesi and Rizzi 2001]. In this article, we settle this question for (Delta + 1)-vertex-coloring and (2 Delta - 1)-edge-coloring by devising deterministic algorithms that require O(Delta(3/4) log Delta + log* n) time in the static, dynamic, and faulty settings. (The term log* n is unavoidable in view of the lower bound of Linial [1987].) Moreover, for (1 + o(1)) Delta-vertex-coloring and (2 + o(1)) Delta-edge-coloring we devise algorithms with O (root Delta + log* n) deterministic time. This is roughly a quadratic improvement comparing to the state-of-the-art that requires O(Delta + log* n) time [Barenboim and Elkin 2009; Kuhn 2009; Panconesi and Rizzi 2001]. Our results are actually more general than that since they apply also to a variant of the list-coloring problem that generalizes ordinary coloring. Our results are obtained using a novel technique for coloring partially colored graphs (also known as fixing). We partition the uncolored parts into a small number of subgraphs with certain helpful properties. Then we color these subgraphs gradually using a technique that employs constructions of polynomials in a novel way. Our construction is inspired by the algorithm of Linial [1987] for ordinary O(Delta(2))-coloring. However, it is a more sophisticated construction that differs from that of Linial [1987] in several important respects. These new insights in using systems of polynomials allow us to significantly speed up the O(Delta)coloring algorithms. Moreover, they allow us to devise algorithms with the same running time also in the more complicated settings of dynamic and faulty networks.