Scheduling classes is a challenging and time-consuming task. The mathematical technique of linear programming has the potential to simplify this challenge by building a model of linear constraints to find the most optimal solution that satisfies all the constraints. In this project, we are implementing a linear programming model using the DOCplex library in Python. The objective function represents instructor satisfaction with different courses and the constraints represent limitations such as the fact that one instructor cannot teach two courses at the same time. These constraints allow many ways to build a schedule. The goal of our program is to identify the most optimal solution, that maximizes the professor's satisfaction and class availability. We will present a system for encoding the preferences about number of preps and back-to-back courses, as well as discussing the advantages of using binary variables to represent combinations of courses, professors, and meeting patterns (such as MWF 9-9:50) instead of individual day-time pairs. We will also present results from adding constraints and preferences about course distribution throughout the day, depending on whether the number of sections is above or below a threshold.