Estimation techniques are of utmost importance in software development life cycle, where the time required to complete a particular task is estimated before a project begins. Estimation is the process of finding an estimate, or approximation, which is a value that can be used for some purpose even if input data may be incomplete, uncertain, or unstable. This tutorial discusses various estimation techniques such as estimation using Function Points, Use-Case Points, Wideband Delphi technique, PERT, Analogy, etc.