  Event and apparent horizons are key diagnostics for the presence and
properties of black holes. In this article I review numerical algorithms and
codes for finding event and apparent horizons in numerically-computed
spacetimes, focusing on calculations done using the 3+1 ADM formalism.
  There are 3 basic algorithms for finding event horizons, based respectively
on integrating null geodesics \emph{forwards} in time, integrating null
geodesics \emph{backwards} in time, and integrating null \emph{surfaces}
backwards in time. The last of these is generally the most efficient and
accurate.
  There are a large number of apparent-horizon finding algorithms, with
differing trade-offs between speed, robustness, accuracy, and ease of
programming. In axisymmetry, shooting algorithms work well and are fairly easy
to program. In slices with no continuous symmetries, Nakamura et al.'s
algorithm and elliptic-PDE algorithms are fast and accurate, but require good
initial guesses to converge. In many cases Schnetter's "pretracking" algorithm
can greatly improve an elliptic-PDE algorithm's robustness. Flow algorithms are
generally quite slow, but can be very robust in their convergence.
