Scheduling is a broad research area and scheduling problems arise from several application domains (production systems, logistic, computer science, etc.). Solving scheduling problems requires tools of combinatorial optimization, exact or approximated algorithms. Flexibility is at the frontier between predictive deterministic approaches and reactive or on-line approaches. The purpose of flexibility is to provide one or more solutions adapted to the context of the application in order to provide the ideal solution. This book focuses on the integration of flexibility and robustness considerations in the study of scheduling problems. After considering both flexibility and robustness, it then covers various scheduling problems, treated with an emphasis on flexibility or robustness, or both.