Le cours de Programmation Concurrente permet d'acquérir les bases théoriques et pratiques de la mise en oeuvre d'applications concurrentes. Ce cours développe les notions de processus, thread, et outils de synchronisation. Parmi les outils étudiés et pratiqués, on met l'accent sur les moniteurs et les sémaphores.
D'un point de vue pédagogique, le cours est organisé sous la forme de transparents visant à expliquer les notions de base, et d'une série de mini-projets mettant en pratique ces notions sur des cas d'usage donnés. Les mises en pratique se font en C et principalement en Java.
Un des points importants du cours est l'apprentissage d'une méthodologie, basée sur la définition de tableaux de gardes/actions, pour élaborer des solutions concurrentes correctes.