This document provides an introduction to mechanism design theory and its applications. It discusses how mechanism design can be used to implement desired social outcomes even when individuals act in their own self-interest. Examples are provided, such as dividing a cake fairly or choosing an optimal public energy source. The document also discusses how algorithmic mechanism design incorporates computer science concepts to solve distributed problems with self-interested agents. Truthful mechanisms like Vickrey-Clarke-Groves are described as an important class of mechanisms. In summary, the document introduces key concepts in mechanism design theory and its uses in algorithmic settings to achieve social goals.