1 Introduction  
1.1 Definitions and notation  
1.2 Population size counting  
2 Prerequisite: Fast averaging protocol  
3 Exact population size counting  
3.1 Naïve slow protocol  
3.2 Fast exact counting with polynomial states  
3.3 Fast exact counting with linear states  
3.4 Population protocols with constant size messages  
3.5 Self-stabilizing counting  
4 Approximate population size counting  
4.1 Naïve slow protocol  
4.2 Maximum of n geometric random variables  
4.3 Arbitrary biased coins  
4.4 Fast protocol with additive error  
4.5 Leader-driven, epidemic-based protocol  
4.6 Discrete averaging with powers of two  
4.7 Regulating size in the presence of an adversary  
5 Tools for making nonuniform protocols uniform  
5.1 Comparison of approximate counting protocols  
5.2 Composition of a uniform counting protocol with a nonuniform protocol  
6 Conclusion and open questions