Programmation orientée projet
COM-112(a)
Media
Programmation Orientée Projet (en C++)

Organisation de l'évaluation sem2 2025:
Projet de programmation (3 rendus + 1 oral individuel aléatoire) = 65%
Examen écrit 11 avril de 14h à 16h = 35%
Horaires, Planning, Dates importantes :
- COURS ex-cathedra en présentiel au CO1 de 14h à 16h, seulement sur 7+1 semaines ( 7 x 2h = 14 x 1h) ; consulter le planning détaillé ci-dessus. Le cours sera aussi donné en streaming sur ce WEBINAR avec un.e TA en-ligne pour répondre aux questions. La video sera mise à disposition après le cours sur moodle.
- 3 rendus de projet aux dates suivantes : 30 mars, 27 avril, 25 mai
- Tous les rendus de projet peuvent donner lieu à un oral individuel sur le fonctionnement du projet (contrôle aléatoire), à partir de la semaine 10
- Tous les cas de détection de plagiat donneront systématiquement lieu à une convocation individuelle en présentiel
- ---------------- FORUM généraux ------------... (copy) (Text and media area)
- Informations générales (Forum)
- ---------------- Support de cours, Conventio... (Text and media area)
- BOOC du MOOC utilisé pour ce cours (URL)
- Rappel: BOOC du MOOC utilisé pour le cours C++ du sem1 (URL)
- C++: table des priorités des opérateurs (URL)
- FAQ: myNAS, VM, backup, etc... [20.09.2023] (URL)
- Convention de programmation en C++ [Aout 2023] (File)
- Comment écrire un algorithme [V1.11 Nov. 2021] (File)
- Documentation de GTKmm 4. (in english) (URL)
- ---------------- Debugging & version control -----... (Text and media area)
- Bug check-list C++ (File)
- Tutorial VISUAL STUDIO CODE : debugging + Makefile + Shared editing + file comparison [05.12.2023] (File)
- fichier archive pour le tuto VSC-debugging (File)
- Petit guide d'utilisateur de GDB pour trouver un bug sans VSC [23.04.2021] (File)
- Code_tests_debugger (File)
- Tuto "Git sur la VM" par Blanche (alternative possible au tuto de Skander) (File)
- Git_Tutorial in english [27.02.2020] (Optional - also see link below) (File)
- Git-for-gitlab tutorial for motivated beginners (to be used with gitlab.epfl.ch) (URL)
- ------------------------------------- Donnée PROJE... (Text and media area)
- Donnée du projet Linked-Crossing [V1.0 , 28.02.2025] (File)
- Barème du projet [28.03.25] V1.01 (File)
- Rendu1: donnée V1.0 + ressources + notes (Folder)
- Rendu2: donnée V1.01 + ressources (gui) + fichiers de test + notes (Folder)
- Rendu3 : donnée V1.0 + notes + fichiers de test (Folder)
- ------------------------------------------- Groupe... (Text and media area)
- Salles TP et Assistant.e.s [2024-25] (File)
- Liste alphabétique de tous les étudiant.es avec les groupes + salle + coach[27.02.2025] (File)
Week 1: 21 février
Cours : Introduction au second semestre / présentation de la programmation modulaire et de la compilation séparée / INSCRIPTION DES GROUPES
TP h1: make et makefile
TP h2: présentation des méthodes de développement de programme avec quelques questions théoriques
- Vue d'ensemble du cours C++ PoP [2024-25] (File)
- video Presentation du cours [2024-25] (URL)
- Cours Programmation Modulaire / make et Makefile [2024-25] (File)
- video Prog Modulaire I [2024-25] (URL)
- PoP Série 0 (File)
- PoP Série 0: code source "calendrier" (File)
- PoP Série 0 : corrigé (File)
- PoP série 0 niveau 0 (File)
- PoP Série 0 niveau 0: code source "eatFruit" (File)
- Série théorique pour Projet : les méthodes de développement de projet [2022-23] (File)
- Solution (part1) Méthodes de développement de projet (File)
Week 2 : 28 février
Suivre le MOOC semaine_1 / Introduction avant la classe inversée
Cours h1: Lien entre le MOOC semaine1 programmation orientée objet et la programmation modulaire
Cours h2: vue générale du projet : fonctionnement, architecture modulaire, classes et types concrets
TP h1: exercices MOOC semaine 1
TP h2: prise de connaissance de la donnée du projet / cf avant le Topic1 sur moodle
- Lien entre MOOC semaine 1 (POO) et programmation modulaire avec 8 quizz [28.02.2025] (File)
- video : MOOC1 [2024-25] (URL)
- PoP_MOOC1 : code utilisé en cours (namespace + datum) [04.03.2025] (File)
- Brève présentation des 3 rendus du projet [2024_25] (File)
- video : projet [2024_25] (URL)
- Les ressources liées au projet (donnée, tests, etc... (Text and media area)
- PoP Série 1 (File)
- Faire d'abord les questions théoriques avancées sur le Développement de Projet (URL)
- Solution (questions avancées) Méthodes de développement de projet (File)
- MOOC sem1 Tutoriel (File)
- MOOC sem 1 exercices (File)
- MOOC sem1 corrigé des exercices (File)
Week 3 : 7 mars
Suivre le MOOC semaine_2 / Constructeur_Destructeur avant la classe inversée
Cours h1: classe inversée constructeur / destructeur
Cours h2: lecture de fichier, préprocesseur
TP h1: lecture de fichier, préprocesseur et stubs, questions avancées sur la notion de type concret
TP h2: exercices MOOC semaine 2
- Projet:2 exemples rendu1, + exemple rendu3 "EPFL" (URL)
- Rappel : comment définir des constantes littérales avec enum (File)
- video enum [2023-24] (URL)
- Classe inversée MOOC2 constructeur/destructeur avec quizz (File)
- video MOOC2 [2024-25] (URL)
- PoP MOOC2 + preproc : code utilisé en cours [2025] (File)
- Programmation orientée Projet: Le préprocesseur [06.03.2025] (File)
- video Le préprocesseur + assert [2024-25] (URL)
- Programmation orientée projet: opérations sur fichier [06.03.2025] (File)
- video fichiers [2024-25] (URL)
- Pop Série 2 vide: cf Série2 niveau_0 et MOOC semaine 2 (File)
- PoP Série2 niveau 0 [06.03.2025] (File)
- PoP Série2 niveau_0: code source automate de lecture [06.03.2025] (File)
- MOOC sem2: tutoriel (File)
- MOOC sem2 : exercices / le corrigé est mis à disposition étant donné la longueur de la série niveau_0 (File)
- MOOC sem2 : corrigé des exercices (File)
Week4 : 14 mars
Suivre le MOOC semaine_3 / Surcharge & notion de "type paramétré"
Cours h1: classe inversée sur static, variable de classe et Surcharge
Cours h2: Forces et faiblesses de vector ; Forces et faiblesses d'un type paramétré
TP h1: static à l'échelle d'un module ; type paramétré
TP h2: exercices MOOC semaine 3 (sauf exercice 11)
- Classe inversée MOOC3: attribut de classe "static" (avec quizz) (File)
- video static avec une question Quizz [2025] (URL)
- PoP_s3 code question Quizz produisant la réponse B : essayez de le corriger (File)
- Lien vers Fiche "vector vs array" du sem1 (URL)
- Fiche : bilan des forces et faiblesses de vector (File)
- Attention: bug causé par une modification du nombre d'éléments du vector dans un range-for (File)
- video: vector [2025] (URL)
- Classe inversée MOOC3: surcharge des opérateurs (File)
- Classe inversée MOOC3 : surcharge des opérateurs avec une question quizz (File)
- video : MOOC3 surcharge des opérateurs [2025] (URL)
- Programmation orientée Projet: notion de type paramétré [15.03.2024] (File)
- video : Type paramétré [2025] (URL)
- PoP Série3 [15.03.2024] (File)
- Pop Série3: code pour le type paramétré Form (File)
- PoP Série3 ex1.3 : formset test files (File)
- PoP Série3 : corrigé (File)
- PoP Série3 : corrigé : code source agenda et form (File)
- PoP Série3 niveau 0 (module student V1.1 avec static) (File)
- PoP série3 niveau 0 (code module student V 1.1 avec static) (File)
- MOOC sem3 : tutoriel (File)
- MOOC sem3: exercices (l'exercice 11 est hors du programme du cours) (File)
- MOOC sem3: corrigé des exercices (File)
Week 5 : 21 mars
Suivre le MOOC semaine_4 / Héritage avant la classe inversée
Cours h1: héritage (première partie), pointeur de fonction
Cours h2: petit exemple héritage + Architecture Model-View-Control / GTKmm / dessin
TP h1: GTKmm / dessin
TP h2: exercices MOOC semaine 4
- MOOC héritage avec 3 Quizz [2023_24] (File)
- video MOOC4 heritage [2024_25] (URL)
- PoP_s4 code d'une méthode spécialisée dans 2 sous-classes (File)
- Programmation orientée Projet: concept de pointeur de fonction (File)
- video : pointeur de fonction [2024-25] (URL)
- Programmation orientée Projet: architecture Model-View-Controller [2024_25] (File)
- video : architecture Model-View-Controller [2024-25] (URL)
- Programmation orientée Projet: Bases de GTKmm4 + conversion Modèle->FenêtreGTKmm [2025] (File)
- video : premier pas avec GTKmm4 [2024-25] (URL)
- PoP Série4 [GTKmm4, 2025] (File)
- PoP Série4 : corrigé [GTKmm4] (File)
- PoP Série4 : corrigé : code source [GTKmm4] (File)
- PoP Série4 niveau 0: Usage de GTKmm4, Création d'une fenêtre et dessin [2025] (File)
- PoP Série4 niveau0: code source et Makefiles GTKmm4 [2025] (File)
- MOOC sem4: tutoriel (File)
- MOOC sem4: exercices (les exercices 13 à 15 sont hors programme) (File)
- MOOC sem4: corrigé des exercices (File)
Week 6 : 28 mars
Suivre le MOOC semaine_5 / Polymorphisme avant la classe inversée
Cours h1: classe inversée polymorphisme
Cours h2: Programmation par événement / GTKmm
TP h1: GTKmm / GUI
TP h2: exercices MOOC semaine 5
Projet : Rendu1 le dimanche 30 mars 23h59
- classe inversée MOOC: Polymorphisme avec Quizz[2023] (File)
- PoP_s5 code utilisé en cours: resolution_statique, accès à la taille d'un bloc alloué dynamiquement (File)
- video sur MOOC5 Polymorphism [version 2024_25] (URL)
- Programmation orientée Projet: Comment rendre le Modèle indépendant de GTKmm4 [2024-25] (File)
- PoP_s5 cours code GTKmm4 drawingArea sur 2 modules (File)
- video switchTube : indépendance du Modèle vis à vis de GTK [2024_25] (URL)
- Programmation Orientée Projet : programmation par événement avec GTKmm4 [2025] (File)
- video switchTube Programmation par événement [2024_25] (URL)
- PoP Série5 [2025] (File)
- PoP s5 ex4 : test files from PoP Série3 ex1.3 (File)
- PoP Série5 : corrigé [2025] (File)
- PoP Série5 : corrigé code source [GTKmm4 2025 et polymorphisme] (File)
- PoP Série5 niveau 0 GTKmm4 (2025] (File)
- PoP Série5 niveau 0: code source GTKmm4 [2025] (File)
- MOOC sem5: tutoriel (File)
- MOOC sem5: exercices (l'exercice 18 n'est pas au programme du cours) (File)
- MOOC sem5: corrigé des exercices (File)
Week 7 : 4 avril
Suivre le MOOC semaine_6 / Héritage_multiple avant la classe inversée
Cours h1: classe inversée héritage multiple
Cours h2: GTK idle vs timer
TP h1: GTKmm / programmation par événement
TP h2: exercices MOOC semaine 6
- Classe inversée MOOC: Héritage multiple avec quizz [20.04.2023] (File)
- video switchTube MOOC6 sur l'héritage multiple [2025] (URL)
- PoP_s6 code utilisé en cours sur l'héritage multiple (File)
- Programmation Orientée Projet: complément GTKmm clavier et souris [01.04.2025] (File)
- video switchTube GTKmm4 clavier et souris / vue d'ensemble du module gui [2025] (URL)
- Programmation Orientée Projet: structuration des données / concept de liste [20.04.2023] (File)
- video : comparaison vector / liste chainee [2025] (URL)
- PoP Série6 GTKmm4 [2025] (File)
- PoP Série6 niveau 0: clavier etsouris avec GTKmm4 [2025] (File)
- PoP Série6 niveau 0: code source [01.04.2025] (File)
- MOOC sem6 Tutoriel (File)
- MOOC sem6 exercices (File)
- MOOC sem6 corrigé des exercices (File)
Week 8 : 11 avril
Les 2 heures de TPs sont dédiées au support pour le projet.
Examen en contrôle continu le 11 avril 14h15-15h45
Votre salle d'examen est indiquée dans le fichier pdf qui sera mis à disposition ci-dessous
- Salle d'examen 11 avril 2025 14h15-15h45 (File)
- Archives examens (Folder)
- examen du 11 avril 2025 (File)
- solution de l'examen du 11 avril 2025 (File)
- notes de l'examen (35 pts) (File)
Week 9 : 18 avril (férié)
Week 10 : 2 mai
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
Week 11 : 9 mai
Week 12 : 16 mai
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
Week 13 : 23 mai
Projet : Rendu1 le dimanche 25 mai 23h59
Week 14 : 30 mai
Oral aléatoire individuel approfondi sur le projet avec l'enseignant
les oraux seront planifiés pour être effectués entre le 26 et le 28 mai de façon à libérer le vendredi 30 mai.
