  We consider the problem of counting the population size in the population
model. In this model, we are given a distributed system of $n$ identical agents
which interact in pairs with the goal to solve a common task. In each time
step, the two interacting agents are selected uniformly at random. In this
paper, we consider so-called uniform protocols, where the actions of two agents
upon an interaction may not depend on the population size $n$. We present two
population protocols to count the size of the population: protocol Approximate,
which computes with high probability either $\lfloor\log n\rfloor$ or
$\lceil\log n\rceil$, and protocol CountExact, which computes the exact
population size in optimal $\operatorname{O}({n\log{n}})$ interactions, using
$\tilde{\operatorname{O}}({n})$ states. Both protocols can also be converted to
stable protocols that give a correct result with probability $1$ by using an
additional multiplicative factor of $\operatorname{O}({\log{n}})$ states.
