The notion of independence surfaces in several branches of mathematics, even in the undergraduate curriculum. Is there a mathematical theory of independence? We introduce and discuss the theory of matroids, mathematical objects created to characterize independence. We show how matroids can arise in linear algebra and graph theory, as well as in certain applications involving optimization. We discuss their intimate connection to the greedy algorithm, and finish with an application to a scheduling problem.