We review and detail the causes of errors in numerical differentiation, including roundoff error, convexity error, cancellation error and correlated errors. We discuss methods for improving accuracy, including step size selection and smoothing techniques, as well as a number of approaches...