Toutes les méthodes reposent sur la démarche de spécification formelle, implémentation et preuve. L'évaluation de l'efficacité d'un problème est basée sur un calcul du temps d'éxécution et de consommation de la mémoire (théorie de la complexité) La récursion sert de base à ce cours. Nous voyons d'une part des structures de données récursives: arbres, arbres rouges-noirs, listes, etc.; d'autre part, des méthodes systématiques de construction de programmes efficaces :
-
la méthode "diviser pour régner"
-
les méthodes de mémorisation, dont la programmation dynamique
-
la méthode gloutonne
-
la méthode générer/tester et ses optimisations.