Abstract
A contract is an economic tool used by a principal to incentivize one or more agents to exert effort on her behalf, by defining payments based on observable performance measures.A key challenge addressed by contracts --- known in economics as \emph{moral hazard} --- is that absent a properly set up contract, agents might engage in actions that are not in the principal's best interest. Another common feature of contracts is \emph{limited liability}, which means that payments can go only from the principal --- who has the deep pocket --- to the agents.
With classic applications of contract theory moving online, growing in scale, and becoming more data-driven, tools from contract theory become increasingly important for incentive-aware algorithm design. At the same time, algorithm design offers a whole new toolbox for reasoning about contracts, ranging from additional tools for studying the tradeoff between simple and optimal contracts, through a language for discussing the computational complexity of contracts in combinatorial settings, to a formalism for analyzing data-driven contracts.
This survey aims to provide a computer science-friendly introduction to the basic concepts of contract theory. We give an overview of the emerging field of ``algorithmic contract theory'' and highlight work that showcases the potential for interaction between the two areas. We conclude with suggested avenues for future research.