Temporal planning is the problem of synthesizing a course of actions to reach a desired goal given a formal description of a system detailing its possible evolutions in time. Temporal planning requires solving the planning problem of deciding which activities to perform in order to reach a goal, together with the scheduling problem of deciding when to execute them in order to fulfill temporal constraints such as deadlines, durations and synchronizations. In this lecture, we will start by introducing the temporal planning problem with its main applications and the theoretical complexity. We will discuss temporal reasoning formalisms to represent and query temporal knowledge. We will then survey both state-oriented and time-oriented approaches, highlighting the major available techniques and tools as well as the principal research results.