This document discusses various techniques for estimating effort for software projects. It describes common challenges with software estimation like subjective nature and changing requirements. It then explains different estimation techniques like algorithmic models, expert judgment, analogy, top-down and bottom-up approaches. Specifically, it outlines the function point analysis technique and COCOMO model for estimating effort based on source lines of code and complexity factors. Finally, it lists some typical rules of thumb for software estimation from Capers Jones.