Notions élémentaires d'algorithmique. Notation asymptotique. Analyse d'un algorithme selon les ressources consommées : temps de calcul, espace mémoire et processeurs. Analyse empirique, théorique et hybride. Consommation de ressources en pire cas, en moyenne et amortie. Patrons de conception d'algorithmes : vorace, diviser-pour-régner, programmation dynamique, parcours de graphes, métaheuristique et probabiliste. Caractérisation des algorithmes d'optimisation : exact, heuristique et approximatif. Introduction aux classes de complexité : P et NP. Décidabilité.