This document discusses asymptotic notations and complexity classes that are used to analyze the time efficiency of algorithms. It introduces the notations of big-O, big-Omega, and big-Theta, and defines them formally using limits and inequalities. Examples are provided to demonstrate how to establish the rate of growth of functions and determine which complexity classes they belong to. Special cases involving factorial and trigonometric functions are also addressed. Properties of asymptotic notations like transitivity are covered. Exercises are presented at the end to allow students to practice determining complexity classes.