This document defines algorithms and how to analyze them. It begins by defining an algorithm informally as a tool for solving computational problems and formally in terms of mathematical models of computation. It then discusses analyzing algorithms to determine their performance characteristics like running time. In particular, it focuses on analyzing the time or space complexity of algorithms, usually expressed as functions of the input size. The document provides examples and conventions for analyzing simple algorithms like linear search. It emphasizes analyzing asymptotic worst-case complexity to compare algorithms and determine how efficiently they solve problems even for large inputs.