The document explains the concepts of little oh (o) and little omega (ω) notations used to denote upper and lower bounds on the growth rates of algorithm running times, which may not be asymptotically tight. Little oh (o) defines an upper bound that is always less than a corresponding function, while little omega (ω) defines a lower bound that is always greater. It further provides definitions, differences between corresponding big O and big Omega notations, and examples of applying these concepts using limit formulas.