Algorithmique, Programmation et Structure de Données (LIFAPSD)
Présentation
Prérequis
- Savoir écrire un algorithme simple en langage algorithmique
- manipuler des variables de type booléen, entier, réel, caractère
- manipuler des tableaux et chaînes de caractères
- connaître les structures de contrôle (tests, boucles, ...)
- savoir découper un programme en fonctions et procédures
- connaître les modes de passage des paramètres
- être familier avec l’organisation de la mémoire
- Savoir implémenter tout ça en langage C/C++
Contenu de l'UE
- Manipulation des principales structures de données utilisées en informatique
- types primitifs: entier, réels, caractères, booléens, pointeurs
- types agrégés: tableaux et structures
- gestion des entrées-sorties: standard et fichier
- structures dynamiques: tableau, liste chainée, pile, file, arbre, fichier
- Les classes et objets
- membre, spécificateur d’accès, surcharge d’opérateur
- type de données abstrait et programmation modulaire
- Algorithmique
- algorithmes de tri (sélection, insertion, fusion)
- introduction à la notion de complexité algorithmique
MCC
La note finale LIFAPSD est calculée comme suit.LIFAPSD = (10 * CCTD + 20 * CCTP + 30 * QCM + 40 * TPNOTE) / 100
CCTD est un contrôle en début de séance de TD le 21/09, CCTP est un contrôle en début de séance de TP le 09-10/11, QCM est un contrôle sous forme de QCM le 13/10, et TPNOTE est un TP noté le 07/12. Les modalités de contrôle des connaissances pour les UE de licence sont disponibles sur le site de l'Université. Notez les points spécifiques importants suivants.- Une épreuve de seconde chance sera proposée à tous les étudiants en fin de semestre
- En cas d'aucune absence aux contrôles continus, la note de seconde chance remplacera la plus mauvaise note des contrôles continus (CC TD, CC TP, QCM, TP noté), uniquement si elle est meilleure
- En cas d'absences (justifiées ou injustifiées) aux contrôles, la note de seconde chance remplacera les absences aux contrôles (avec les coefficients des contrôles concernés)
- Si le cumul des coefficients des absences aux contrôles dépasse strictement 40% de la note d'UE, la note de seconde chance ne sera pas utilisée et l’étudiant sera DEF à l’UE (et donc à l’année)
- Il n’y a pas de session 2 (ni en janvier ni en juin)
Groupes et emplois du temps
Automne 2025 :| Groupe |
Créneau TD |
Encadrant TD |
Salle TD |
Créneau TP |
Encadrant TP |
Salle TP |
Lien EDT |
| A1 |
lundi 8h00 – 9h30 |
Erwan Guillou |
Thémis 49 |
lundi 9h45 – 13h00 |
Erwan Guillou |
Ariane 03 |
|
| A2 |
Guillaume Damiand |
Ariane 04 |
|||||
| B3 |
lundi 8h00 – 9h30 |
Samir Aknine |
Thémis 50 |
lundi 9h45 – 13h00 |
Samy Salma |
Ariane 12 |
|
| B4 |
Hugo Schott |
Ariane 13 |
|||||
| C5 |
lundi 8h00 – 9h30 |
François Pitois |
Thémis 51 |
lundi 9h45 – 13h00 |
François Pitois |
Ariane 14 |
|
| C6 |
Carina Deaconu |
Ariane 15 |
|||||
| D7 |
lundi 8h00 – 9h30 |
Nicolas Pronost |
Thémis 63 |
lundi 9h45 – 13h00 |
Nicolas Pronost |
Ariane 06 |
|
| D8 |
Nicolas Pronost |
Ariane 05 |
|||||
| E9 |
lundi 9h45 – 11h15 |
Etienne Geantet |
Thémis 49 |
mardi 15h45 - 19h |
Etienne Geantet |
Ariane 05 |
|
| E10 |
Etienne Geantet |
Ariane 06 |
|||||
| F11 |
lundi 9h45 – 11h15 |
Samir Aknine |
Thémis 50 |
mardi 15h45 - 19h |
Elise Jeanneau |
Ariane 11 |
|
| F12 |
Hugo Schott |
Ariane 12 |
|||||
| G13 |
lundi 9h45 – 11h15 |
Florence Zara |
Thémis 51 |
mardi 15h45 - 19h |
Florence Zara |
Ariane 04 |
|
| G14 |
Florence Zara |
Ariane 03 |
|||||
| H15 |
lundi 9h45 – 11h15 |
Nicolas Louvet |
Thémis 63 |
mardi 15h45 - 19h |
Nicolas Louvet |
Ariane 13 |
|
| H16 |
Nicolas Louvet |
Ariane 14 |
Emploi du temps LIFAPSD tous les groupes
Ressources
Transparents de CM
| CM1 - Introduction et rappels | transparents CM1 |
| CM2 - Allocation dynamique de mémoire | transparents CM2 |
| CM3 - Classes et objets (1/2) | transparents CM3-CM4 |
| CM4 - Classes et objets (2/2) | |
| CM5 - Fichier, tri et complexité (1/2) | transparents CM5-CM6 |
| CM6 - Fichier, tri et complexité (2/2) | |
| CM7 - TDA et programmation séparée | transparents CM7 |
| CM8 - Tableau Dynamique | transparents CM8 |
| CM9 - Liste | transparents CM9 |
| CM10 - Pile et file | transparents CM10 |
| CM11 - Arbre (1/2) | transparents CM11-CM12 |
| CM12 - Arbre (2/2) | |
| CM12 (bonus) - Résumé sur les TDA | transparents CM12 bonus |
Exercices de TD
Polycopié entier des énoncés de TD et TP.| TD1 - Vie et mort des variables en mémoire (1/2) | énoncé | |
| TD2 - Vie et mort des variables en mémoire (2/2) | énoncé | |
| TD3 - Classe et objet (1/2) | énoncé | |
| TD4 - Classe et objet (2/2) | énoncé | |
| TD5 - Algorithme, invariant de boucle et complexité (1/2) | énoncé | |
| TD6 - Algorithme, invariant de boucle et complexité (2/2) | énoncé | |
| TD7 - Tri fusion (1/2) | énoncé | |
| TD8 - Tri fusion (2/2) | énoncé | |
| TD9 - Tableau dynamique | énoncé | |
| TD10 - Liste chaînée | énoncé | |
| TD11 - Pile et file | énoncé | |
| TD12 - Arbre binaire | énoncé |
Exercices de TP Polycopié entier des énoncés de TD et TP
| TP1 - De LIFAPI à LIFAPSD | énoncé | ||
| TP2 - Vie et mort des variables en mémoire | énoncé | ||
| TP3 - Classe et objet | énoncé | ||
| TP4 - Fichier et complexité expérimentale | énoncé | random.txt, reverse.txt, sorted.txt | |
| TP5 - Tableau dynamique | énoncé | ElementTD.h, ElementTD.cpp TableauDynamique.h | |
| TP6 - Liste doublement chaînée | énoncé | ElementL.h, ElementL.cpp, Liste.h | |
| TP7 - Pile et file | énoncé | ElementL.h, ElementL.cpp, ElementTD.h, ElementTD.cpp, File.h, Pile.h | |
| TP8 - Arbre binaire de recherche | énoncé | ElementA.h, ElementA.cpp, Arbre.h |
Annexes
- Annexe A - Commandes Linux usuelles
- Annexe B - Tirage de nombres aléatoires
- Annexe C - Mesure de temps d'exécution
Annales d'examens et corrigés
- Seconde chance 2025-2026 : énoncé et corrigé
- ECA automne 2024-2025 : énoncé et corrigé
- ECA automne 2023-2024 : énoncé et corrigé
- ECA automne 2022-2023 : énoncé et corrigé
Littérature
Il existe des tonnes de ressources sur Internet et dans les librairies pour apprendre l'algorithmique et la programmation C++. Voici quelques livres disponibles à la BU de science, ainsi que quelques liens utiles.-
Algorithmique : cours avec 957 exercices et 158 problèmes, T. Cormen et al., 2010
-
Programmez avec le langage C++, M. Nebra et M. Schaller, 2015
-
Conception d'algorithmes: principes et 150 exercices corrigés, P. Bosc et al., 2016
-
Apprendre le C++, C. Delannoy, 2008
-
Algorithmique : applications en C, C++ et Java, J.-M. Léry et F. Jacquenod, 2013
-
LIFAPI (CM/TD/TP/exam) : pour ceux qui n'ont pas suivi l'UE l'année dernière
-
Tutoriels C++ et cours d'algo (developpez.com)
-
Documentation et tutoriel C++ (cplusplus.com en anglais)
-
Outil en ligne de visualisation d'exécution de code C++
-
IDE C++ (et autres) en ligne