This document discusses analyzing algorithms and asymptotic notation. It defines running time as the number of primitive operations before termination. Examples are provided to illustrate calculating running time functions and classifying them by order of growth such as constant, logarithmic, linear, quadratic, and exponential time. Asymptotic notation such as Big-O, Big-Omega, and Big-Theta are introduced to classify functions by their asymptotic growth rates. Examples are given to demonstrate determining tight asymptotic bounds between functions. Recurrences are defined as equations describing functions in terms of smaller inputs and base cases, which are useful for analyzing recurrent algorithms.