## Learning Outcomes

At the end of this lecture, you’ll be able to:

- Express the formal,
**mathematical definition of Big Oh**. - Use the mathematical definition of Big Oh to prove asymptotic running time of a given program.
- Express the
**mathematical definition of Big Omega**. - Use the mathematical definition of Big Omega to prove asymptotic running time of a given program.
- Recognize that big Oh and big Omega are
**not**necessarily tight bounds. - Recognize growth rate type (upper or lower bound) is different from worst case vs. best case analysis.
- Express the
**mathematical definition of Big Theta**. - Use the definition of Big Theta to show asymptotic running time of a given program.
- Enumerate various asymptotic notation used in this course.
- Explain what is meant by
**asymptotic complexity analysis**of an algorithm. - Contrast between
**time vs space complexity**. - Express the space requirements for a given code segment as a function of the input size in the worst case scenario.
- Elaborate on the benefits of using asymptotic notation and worst-case analysis to study computational complexity of algorithms.

## Lecture Plan

In this lecture, we'll cover the following lessons:

- Big Oh: Formal Definition
- Big Oh: Mathematical Definition⚡
- Big Oh Definition: Exercise I⚡
- Big Oh Definition: Exercise II⚡
- Big Oh Definition: Asymptotic Upper Bounds
- Big Omega: Asymptotic Lower Bounds⚡
- Big Omega: Exercise I⚡
- Big Omega: Exercise II⚡
- Big Theta: Asymptotic Tight Bound⚡
- Big Theta: Another Definition!⚡
- Big Theta: Exercise⚡
- Asymptotic Notation: Summary
- Asymptotic Complexity: Time & Space⚡
- Asymptotic Complexity: Exercise I⚡
- Asymptotic Complexity: Exercise II⚡
- Asymptotic Complexity: Summary

Lessons marked with ⚡ contain exercise/activity.