This document discusses approximation algorithms for two NP-complete problems: scheduling independent tasks and bin packing. It introduces the longest processing time (LPT) rule for scheduling tasks, and proves an upper bound on how suboptimal LPT schedules can be compared to optimal schedules. It also describes four heuristics for bin packing - first fit, best fit, first fit decreasing, and best fit decreasing - and proves an upper bound on the number of bins they may use compared to optimal packings.