This document provides an introduction and overview of algorithms and analysis of algorithms. It begins with definitions of algorithms and what constitutes an algorithm. It then discusses analyzing algorithms to determine their efficiency, including analyzing worst-case, average-case, and best-case scenarios. It introduces asymptotic notation used to describe algorithm running times at different scales, including big-O notation. It also discusses computational models and analyzing algorithms in terms of counting the basic operations they perform. The document is presented as a lecture on algorithms with definitions, examples, and outlines of key topics to cover.