In this revised edition some errors were corrected, some parts were explained in more detail, and new material has been added. In particular, further generalizations of the RCPSP, additional practical applications and some more algorithms were integrated.Since in recent years commercial and non-commercial solvers for mixed integer linear programs or satisfiability problems became much more efficient, they may be a good alternative for calculating exact (or heuristic) solutions. Hence, we provided new sections on MIP formulations and a SAT formulation for the RCPSP. Furthermore, a description of ant colony optimization was added to the section on heuristic methods for solving the RCPSP. The section on lower bounds was augmented by bounds based on Lagrangian relaxation. In connection with the new methods for solving the RCPSP, basic concepts for SAT solvers, Lagrangian relaxation, and ant colony optimization have been added to Chapter 2. We also wrote a new basic section on constraint programming.Since in the first edition in the section on constraint propagation for the RCPSP the input-or-output test was incorrect, we corrected it in this edition.A list of errata according to the book can be found at the website Preface Scheduling problems have been investigated since the late fifties. Two types of applications have mainly motivated research in this area: project planning and machine scheduling. While in machine scheduling a large number of specific scheduling situations depending on the machine environment and the job characteristics have been considered, the early work in project planning investigated scheduling situations with precedence constraints between activities assuming that sufficient resources are available to perform the activities. More recently, in project scheduling scarce resources have been taken into account leading to so-called resource-constrained project scheduling problems. On the other hand, also in machine scheduling more general and complex problems have been investigated. Due to these developments today both areas are much closer to each other. Furthermore, applications like timetabling, rostering or industrial scheduling are connected to both areas.This book deals with such complex scheduling problems and methods to solve them. It consists of three parts: The first part (Chapters 1 and 2) contains a description of basic scheduling models with applications and an introduction into discrete optimization (covering complexity, shortest path algorithms, linear programming, network flow algorithms and general optimization methods). In the second part (Chapter 3) resource-constrained project scheduling problems are considered. Especially, methods like constraint propagation, branch-andbound algorithms and heuristic procedures are described. Furthermore, lower bounds and general objective functions are discussed. In the last part (Chapter 4) generalizations of the job-shop problem are covered leading to applications like job-shop problems with flexible machines, transport robots or with limited...