La programación de tareas o scheduling es un proceso de toma de decisiones con la meta de optimizar uno o más objetivos, que juegan un rol importante en la mayoria de sistemas de producción y manufactura. El scheduling tiene que ver fundamentalmente con la asignación de recursos escasos durante el tiempo. Los recursos y tareas en una organización pueden tomar muchas formas. Los recursos pueden ser máquinas en una planta, rutas en un aeropuerto, equipos en una construcción, unidades de procesamiento en un entorno computacional, etc. las tareas pueden ser operaciones en un proceso de producción, despegues y aterrizajes en un aeropuerto, etapas en un proyecto de construcción, ejecuciones de un programa de computador, entre otros.