## Session Overview

This lecture revolves around the topic of algorithmic efficiency. It introduces the random access model (RAM) of computation and “big O notation” as a way to talk about order of growth. It concludes with binary search. |

## Session Activities

### Lecture Videos

## About this Video

Topics covered: Efficiency, problem reduction, RAM, best case, worst case, expected case, growth, exponential growth, polynomial growth, logarithmic growth, global variables.

## Resources

### Recitation Videos

## About this Video

Topics covered: Big O notation, algorithm complexity, algorithm comparison example, object-oriented programming, Person class example, defensive programming, private attributes, mutability, aliasing.

## Resources

- Recitation handout (PDF) (Courtesy of Sarina Canelake. Used with permission.)

## Check Yourself

Why is efficiency important?

› *View/hide answer*

Efficiency determines how long our programs take to run; when large sets of data are being handled, it can make a huge difference (on the order of years or even millennia) whether our program is efficient or not.

What notation do we use to state complexity?

› *View/hide answer*

Big O notation.