The counting quantifier C pf, where p is a polynomial and f is an arbitrary function from strings to integers, is defined as follows: C pf y Q ( x , y ) means that there are at least f(x) strings y of length p(|x|) satisfying the predicate Q(x,y). The counting hierarchy (CH) arises by combining the counting quantifier with the existential and universal quantifiers. This hierarchy is important because it expresses the complexity of many natural problems, but little was known about the structural properties of CH before the publication of this paper. The author addresses four main topics: the investigation of the Boolean properties of the classes in CH; the characterization of CH in terms of nondeterministic and probabilistic machines with access to oracles; relativized separations of counting classes--NP from G (exact counting), NP from ⊗P, and ⊗P from PP; and the absolute separation of log-time counting complexity classes.