Un algorithme est une description précise et rigoureuse d’une suite d’opérations permettant d’obtenir, en un nombre fini d’étapes, la solution d’un problème.

L'objectif de ce cours est de permettre aux étudiants de concevoir des algorithmes permettant de résoudre des problèmes de base. L'accent est mis sur les méthodes de conception et la notion de type abstrait afin de préparer l'étudiant au génie logiciel et à la programmation orientée objet. 

Les notions de base d'algorithmiques sont introduites en s'appuyant sur la notion de tri des données. Puis les types abstraits sont introduits pour définir les structures de données de base. Sont étudiés ensuite les différents algorithmes permettant de les manipuler.

Le cours se termine par des notions plus avancées telles que les methodes gloutonnes, la programmation dynamique ou l'analyse amortie.