
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, où CC1TD-CC2TD-CC3TD sont les trois contrôles continus de TD, CC1TP-CC2TP-CC3TP sont les trois contrôles continus de TP, TPNOTE est le TP noté:LIFAPSD = (10 * CC1TD + 10 * CC2TD + 10 * CC3TD + 15 * CC1TP + 15 * CC2TP + 15 * CC3TP + 25 * TPNOTE) / 100
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, 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 |
Vincent Nivoliers |
Omega 01 |
lundi 9h45 – 13h00 |
Vincent Nivoliers |
Ariane 16 |
|
A2 |
Ariane 15 |
||||||
B1 |
lundi 8h00 – 9h30 |
Erwan Guillou |
Thémis 68 |
lundi 9h45 – 13h00 |
Erwan Guillou |
Ariane 14 |
|
B2 |
Etienne Parent |
Ariane 13 |
|||||
C1 |
lundi 8h00 – 9h30 |
Etienne Geantet |
Thémis 63 |
lundi 9h45 – 13h00 |
Etienne Geantet |
Ariane 12 |
|
C2 |
Thomas Stavis |
Ariane 11 |
|||||
D1 |
lundi 8h00 – 9h30 |
Samir Aknine |
Thémis 53 |
lundi 9h45 – 13h00 |
Guillaume Damiand |
Ariane 06 |
|
D2 |
Valentin Cuzin-Rambaud |
Ariane 05 |
|||||
E1 |
lundi 9h45 – 11h15 |
Nicolas Pronost |
Thémis 55 |
mardi 15h45 - 19h |
Nicolas Pronost |
Ariane 15 |
|
E2 |
Ariane 21 |
||||||
F1 |
lundi 9h45 – 11h15 |
Samir Aknine |
Thémis 54 |
mardi 15h45 - 19h |
Elise Jeanneau |
Ariane 11 |
|
F2 |
Gabriel Meynet |
Ariane 12 |
|||||
G1 |
lundi 9h45 – 11h15 |
Florence Zara |
Grignard L |
mardi 15h45 - 19h |
Florence Zara |
Ariane 05 |
|
G2 |
Louis Bagot |
Ariane 04 |
|||||
H1 |
lundi 9h45 – 11h15 |
Nicolas Louvet |
Grignard K |
mardi 15h45 - 19h |
Nicolas Louvet |
Ariane 03 |
|
H2 |
Maher Mallem |
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 - Classes et objets (2/2) | transparents CM4 |
CM5 - Fichier, tri et complexité (1/2) | transparents CM5 |
CM6 - Fichier, tri et complexité (2/2) | transparents CM6 |
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 - Arbre (2/2) | transparents CM12 |
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é | corrigé |
TD2 - Vie et mort des variables en mémoire (2/2) | énoncé | corrigé |
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
- Pas d'annale spécifique pour l'épreuve de seconde chance (nouvelle en 2025-2026), mais sera similaire à l'ECA des années passées :
- 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