  Cosmological N-Body simulations have become an essential tool for studying
formation of large scale structure. These simulations are computationally
challenging even though the available computing power gets better every year. A
number of efficient algorithms have been developed to run large simulations
with better dynamic range and resolution. We discuss key algorithms in this
review, focusing on techniques used and their efficacy. N-Body simulations
solve a model that is an approximation of the physical model to be simulated,
we discuss limitations arising from this approximation and techniques employed
for solving equations. Apart from simulating models of structure formation,
N-Body simulations have also been used to study aspects of gravitational
clustering. Simulating formation of galaxies requires us to take many physical
process into account; we review numerical implementations of key processes.
