This document provides an introduction to algorithms and their analysis. It discusses algorithm design techniques like insertion sort and asymptotic analysis using big O notation to describe an algorithm's running time. Insertion sort is analyzed as an example, with its best, average, and worst case times shown to be O(n), O(n^2), and O(n^2) respectively, where n is the input size. Common functions and standard asymptotic notations are also introduced.