Linear Optimization and Extensions