Linear programming is an important class of convex problems with constraints, where the objective function is linear, and the problem is almost entirely determined by the linear inequality constraints. Most real-world problems involve constrained resources, such as time, space, money, materials, and labor. There are real tradeoffs in solving such problems, which we express as inequality constraints. Some of the many applications include: resource allocation, workforce scheduling, factory layout, space usage, production scheduling, inventory management, crop planning and irrigation, portfolio optimization, supply chain logistics, fleet routing, and healthcare resource and staff allocation. These examples are all characterized by a relatively simple objective function that is linearly related (e.g., profit or cost), and constrained resources. There is no closed-form solution to a general linear program. However, there are accurate and efficient algorithms that scale to large problems. In this chapter, we define the mathematical ingredients of a linear program, provide examples to illustrate several applications, and discuss solution techniques and extensions.