Project oriented programming
Résumé
Ce cours complète les connaissances sur le langage C++, en particulier sur le développement d'application modulaire robuste (principe de séparation des fonctionnalités). La dimension pratique étant jugée primordiale pour l'acquisition de ce savoir-faire, un temps important est consacré à un projet
Contenu
Méthode de développement de projet modulaire : modules, compilation séparée, test unitaire, vérification et validation. Mise en oeuvre avec l'approche Model-View-Controller.
Concepts de l'approche Orienté Objet : structure de classe, encapsulation, méthodes, héritage, polymorphisme.
Introduction au graphique 2D pour maîtriser la mise en oeuvre d'interfaces graphiques simples (concept de programmation par événements avec GTKmm).
Mise en pratique sur des exemples : les concepts théoriques introduits lors des cours magistraux seront mis en pratique dans le cadre d'exercices et d'un projet sur machines.
Mots-clés
langage C++, approche orientée objet, programmation modulaire, programmation par événements
Compétences requises
Cours prérequis obligatoires
CS-119(c) Information, calcul, communication
Concepts importants à maîtriser
bases de la programmation procédurale en C++
Acquis de formation
A la fin de ce cours l'étudiant doit être capable de:
- Modéliser en langage C++ une situation modérément complexe du monde réel décrite en français
- Analyser un problème complexe pour le décomposer en sous-problèmes
- Concevoir des algorithmes résolvant des tâches modérément complexes
- Transcrire un algorithme en son programme équivalent en C++ utilisant les concepts de l'orienté objet
- Réaliser en groupe de deux personnes une application modulaire de taille moyenne en langage C++
- Analyser du code C++ avancé pour en décrire le résultat ou le corriger s'il est erroné
- Systématiser une stratégie de test du programme en cours de développement
Compétences transversales
- Utiliser les outils informatiques courants ainsi que ceux spécifiques à leur discipline.
- Persévérer dans la difficulté ou après un échec initial pour trouver une meilleure solution.
- Accéder aux sources d'informations appropriées et les évaluer.
- Planifier des actions et les mener à bien de façon à faire un usage optimal du temps et des ressources à disposition.
- Utiliser une méthodologie de travail appropriée, organiser un/son travail.
- Gérer ses priorités.
Méthode d'enseignement
L'enseignement ex-cathedra sera concentré sur les 7 premières semaines du semestre (2h par semaine). Du fait des vacances de mi-semestre, le dernier cours peut avoir lieu en semaine 8.
En conséquence il est essentiel d'investir un temps plus important que celui défini par les crédits car chaque semaine de la première moitié du semestre contient une série portant sur une leçon du MOOC et une autre apportant des éléments pour le projet.
Pendant la seconde moitié du semestre il n'y aura plus de période ex-cathedra et les 2h de pratique seront totalement dédiées au projet.
De plus, l'effort du projet est concentré sur 12 semaines car il se termine deux semaines avant la fin du semestre ; il reste alors seulement l'oral individuel sur le projet.
Travail attendu
participation en lisant le support de cours AVANT le cours pour pouvoir poser des questions,
résolutions d'exercices en séance avec support ou de manière autonome,
travailler avec la machine virtuelle fournie pour disposer du même environnement que celui de l'évaluation du projet,
Lire le projet en détail dès le début du semestre pour comprendre ses objectifs et, au besoin, poser des questions pour les clarifier (cf ci-dessous). Planifier le travail pour chaque rendu de projet dès la semaine où sa donnée est fournie. Vous pouvez travailler partiellement de manière autonome ou toujours en groupe. Dans tous les cas il faut planifier dès le début plusieurs dates pour du travail simultané côte à côte pour intégrer et tester le rendu dans l'environnement de la machine virtuelle.
Developpement d'une capacité d'autonomie basée sur la recherche par mots-clef en priorité sur le forum du cours et sur celui du MOOC, et enfin sur tout site externe pertinent. La formulation de questions documentées est un élément central pour l'efficacité de ces outils. Cette approche est centrale pour toutes les questions relatives au projet car la donnée d'un projet est par définition imprécise et incomplète (comme tout problème du monde réel). C'est votre rôle de participer à la clarification des objectifs du projet par vos questions sur le forum du cours (comme l'ingénieur.e avec ses clients). Vous êtes aussi encouragés à répondre aux questions dont vos connaissez la réponse (c'est un très bon entrainement si on envisage d'être un.e futur.e assistant.e-étudiant).
L'usage d'IA générative pour le projet n'est pas interdit mais devra être documenté dans les rapports du projet.
Méthode d'évaluation
1 test écrit compte pour 35 % de la note finale (dans le dernier tiers du semestre)
Le projet est fait en groupes de deux personnes. Il est décomposé en trois rendus notés qui comptent pour un total de 65% de la note finale.
Un bref oral final individuel est effectué après le dernier rendu du projet ; il est destiné à vérifier la bonne connaissance du code de son projet: l'absence à l'oral implique un zéro au projet. De plus, une mauvaise performance à cet oral peut conduire à un oral approfondi avec l'enseignant et résulter en une réduction de la note individuelle du projet.
Encadrement
Office hours | Non |
Assistants | Oui |
Forum électronique | Oui |
Ressources
Service de cours virtuels (VDI)
Oui
Bibliographie
J.-C. Chappelier, C++ par la pratique, PPUR 2012 (3e édition)
Ressources en bibliothèque
Polycopiés
les copies des exposés ex-cathedra sont disponibles sur le site web autant que possible avant les cours.
Liens Moodle
Vidéos
Préparation pour
Cours, laboratoires et projets avec ordinateur
In the programs
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Project oriented programming
- Courses: 1 Hour(s) per week x 14 weeks
- Project: 2 Hour(s) per week x 14 weeks
- Type: mandatory
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Project oriented programming
- Courses: 1 Hour(s) per week x 14 weeks
- Project: 2 Hour(s) per week x 14 weeks
- Type: mandatory