For each method, we provide a detailed introduction to the basic concepts, give some simple numerical examples, discuss some of the more important extensions to the basic methods, and provide references for further reading.