Algorithmique et programmation
Présentation
Cette UE comprend une introduction à l'algorithmique impérative, ainsi qu'un apprentissage des aspects impératifs d'un langage de programmation classique.
Pré-requis nécessaires
Même si les notions sont reprises, il est préférable d'avoir suivi un UE d'informatique au premier semestre (portail MPMEI ou ISI).
Objectifs
A la fin de ce cours, l'étudiant doit:
- connaitre et savoir utiliser les bases de la programmation impérative (structures de contrôles, fonctions) ; être familiarisé avec des éléments avancés (récursivité)
- connaitre les bases du typage et de la vérification des types, savoir utiliser les types de base et quelques structures de données (tableaux, enregistrements)
- être familiarisé avec la notion de complexité d'un algorithme
- connaitre et savoir implémenter une ou plusieurs solutions pour résoudre un problème algorithmique simple (jusqu'aux algorithmes de tris) ; pouvoir appliquer une analyse descendante sur un problème
- appliquer de bonnes pratiques de programmation : décomposer en fonction, commenter, spécifier ; pouvoir utiliser un langage de programmation impératif dans ce contexte.
Compétences visées
A la fin de ce cours, l'étudiant doit:
- connaitre et savoir utiliser les bases de la programmation impérative (structures de contrôles, fonctions) ; être familiarisé avec des éléments avancés (récursivité)
- connaitre les bases du typage et de la vérification des types, savoir utiliser les types de base et quelques structures de données (tableaux, enregistrements)
- être familiarisé avec la notion de complexité d'un algorithme
- connaitre et savoir implémenter une ou plusieurs solutions pour résoudre un problème algorithmique simple (jusqu'aux algorithmes de tris) ; pouvoir appliquer une analyse descendante sur un problème
- appliquer de bonnes pratiques de programmation : décomposer en fonction, commenter, spécifier ; tester, corriger un code ; pouvoir utiliser un langage de programmation impératif dans ce contexte.
Descriptif
- Notion d'algorithme
- Les différentes catégories d'instructions algorithmiques. Structures de contrôle (conditionnelles, boucles).
- Définitions de fonctions, spécification et appels de fonctions. Fonctions récursives.
- Variables. Types de données de base. Structures de données.
- Apprentissage d'un langage impératif classique.
- Algorithmes classiques : recherche séquentielle, par dichotomie. Tris (à bulle, fusion, insertion, sélection, rapide, par tas).
- Une introduction aux types abstraits pourra également être faite.
Bibliographie
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein (trad. de l'anglais par Xavier Cazin et Georges-Louis Kocher), Algorithmique : cours avec 957 exercices et 158 problèmes, Paris, Dunod, 2010