This document discusses computational complexity and analyzing the running time of algorithms. It defines big-O notation, which is used to classify algorithms according to their worst-case performance as the problem size increases. Examples are provided of algorithms with running times that are O(1), O(log N), O(N), O(N log N), O(N^2), O(N^3), and O(2^N). The growth rates of these functions from slowest to fastest are also listed.