Scheduling is the process of allocating scarce resources to a set of tasks over time. In this course, we look at practical scheduling problems, solution techniques, and algorithms in both manufacturing and service industries. Specifically, we look at job shop scheduling, timetabling, project scheduling, supply chain scheduling, workforce scheduling, healthcare scheduling, and sports scheduling and discuss various solution procedures including heuristics, constraint programming, local search, and dispatching rules. We apply our knowledge to investigate one case study concerning real world scheduling problems and learn from one guest speaker who discusses interesting scheduling challenges and opportunities