This document discusses algorithm analysis and efficiency. It defines an algorithm as a step-by-step set of instructions to solve a problem with a definite end point. Algorithm analysis is important to establish if a given algorithm uses reasonable resources. Algorithm efficiency relates to the amount of computational resources used, and the goal is to minimize usage. The main measures of efficiency are time complexity, or how long an algorithm takes, and space complexity, or how much memory is needed. Less common measures include transmission size, external risk, response time, and total cost of ownership.