  A comprehensive overview of lattice rules and polynomial lattice rules is
given for function spaces based on $\ell_p$ semi-norms. Good lattice rules and
polynomial lattice rules are defined as those obtaining worst-case errors
bounded by the optimal rate of convergence for the function space. The focus is
on algebraic rates of convergence $O(N^{-\alpha+\epsilon})$ for $\alpha \ge 1$
and any $\epsilon > 0$, where $\alpha$ is the decay of a series representation
of the integrand function. The dependence of the implied constant on the
dimension can be controlled by weights which determine the influence of the
different dimensions. Different types of weights are discussed. The
construction of good lattice rules, and polynomial lattice rules, can be done
using the same method for all $1 < p \le \infty$; but the case $p=1$ is special
from the construction point of view. For $1 < p \le \infty$ the
component-by-component construction and its fast algorithm for different
weighted function spaces is then discussed.
