In this survey we give a concise account of the theory of branching
processes. We describe the branching process of a single type in discrete
time followed by the multitype case. Continuous time branching process
of a single type is discussed next followed by branching processes in random
environments in discrete time. Finally we deal with branching random walks.