Programmation Orientée Projet (MT & EL)
Topic outline
-
Programmation Orientée Projet (en C++)
pour étudiants de Microtechnique et ElectricitéLe cours exploite partiellement le MOOC suivant auquel il est demandé deS'INSCRIRE DES LA PREMIERE SEMAINE DU SEMESTREProjet du semestre de printemps 2018-19 : DodgeballRègle de constitution des groupes de 2 personnes pour le projet:- les 2 membres d'un groupe ne peuvent pas avoir 5.75 ou 6 en PROG_I
- Un groupe peut être constitué de personnes de sections différentes.
- Les groupes sont officiellement enregistrés à la semaine 2.
- Il n'est pas autorisé de faire le projet seul(e).
Horaires, Planning, Dates importantes et Salles :- Cours ex-cathedra chaque vendredi de 14h15 à 16h00 en BCH 2201 pendant les 7 premières semaines
- Examen écrit décalé du vendredi 10 mai au vendredi 3 à cause de Balélec (de 14h15 à 15h30)
- TP : de 16h15 à 18h00 pendant les 12 premières semaines en CO 020-021-023, CO4 et CO 016
- Machine Virtuelle (VM): il faudra récupérer la nouvelle version quand elle sera disponible
- Oral final en semaine 13: vendredi 24 mai de 16h à 19h30
- aucune activité en semaine 14.
Salles : Assistants-DOCTORANTS / Assistants-ETUDIANTS :-
Ce Forum est dédié aux Projets : donnée, rendu, bugs
Vérifiez si la question n'a pas déjà été posée avant d'écrire un nouveau message. Pour cela vous avez deux moyens très efficaces:
- la table des matières des messages montre le sujet des messages qui se doit d'être précis
- l'outil "search" qui vous montre tous les messages contenant le mot recherché
Privilégiez le forum pour partager les questions et n'hésitez pas à répondre si vous connaissez la réponse.
N'envoyez PAS de message individuels sur le forum, par exemple si vous voulez remercier quelqu'un d'avoir répondu à votre question, alors envoyez-lui un email personnel ; vous épargnez ainsi les 223 autres étudiants de ce type de message inutile pour eux.
--------------
En cas de bug: NE PAS MONTRER plus de 10 lignes de code sur ce forum ; décrivez votre problème et selon sa nature je vous demanderai des compléments à envoyer par email à l'enseignant ronan.boulic@epfl.ch
-----------
-
les mises à jours sont indiquées en bleu
V1.04 [27.04.19] section 3.2.2 :
1) précision sur les 2 exceptions d'initialisation des distances dont le cas de la diagonale tangente à 2 obstacles.
2) page 5: exception pour le choix du spot voisin : ne pas utiliser la diagonale si elle est tangente à un obstacle car il y a risque de collision.
3) la méthode de comparaison des 8 voisins ne garantit pas d'obtenir exactement le chemin obtenu avec la démo qui implémente une approche plus élaborée. L'important est d'obtenir un chemin en temps fini.
V1.03 [29.03.19] indication de la taille de la surface de dessin = (2*DIM_MAX) en largeur et en hauteur
V1.02 [16.03.19] mise à jour des Figures 8 et 9 pour faire ressortir le role "générique" du module utilitaire, et son indépendance par rapport aux autres modules du modèle. Il peut aussi être utilisé par simulation et par le module gui.
V1.01 [05.03.19] clarification sur l'affichage de "game's over!" -> la simulation continue même si on affiche ce message. Cela permet de faire des tests plus facilement.
-
version 8 mars: message à afficher en cas de lecture sans erreur
version 9 mars: avec les 2 derniers messages d'erreurs manquants balle-balle et joueur-balle
-
1) Prenez le temps de vérifier que les conventions de présentation sont respectées comme indiqué dans la première phrase de l'introduction du projet:
Ce projet est indépendant de celui du semestre dernier. Le lien reste néanmoins la mise en oeuvre des grands principes (abstraction, ré-utilisation), les conventions de présentation du code et les connaissances accumulées jusqu’à maintenant dans ce cours
https://moodlearchive.epfl.ch/2018-2019/mod/resource/view.php?id=1011653
Pour mémoire, je cite:
L02Le nombre maximum de caractère par ligne est 87 = pas de wrapping (geany est paramétrable pour matérialiser cette limite)
L03Le nombre maximum de lignes par fonction est 40 = taille écran
Pour prendre en compte la complexité de l'automate de lecture nous accepterons au maximum DEUX fonctions de longeur maximum 80 lignes.
2) Les conventions de présentations ne disent rien sur la longueur acceptée pour la définition d'une classe dans l'interface des modules.
Mon message est clair sur ce point, tout comme dans le MOOC : la définition des méthodes doit être externalisée dans l'implémentation du module. Le seul cas accepté de définition de méthode dans l'interface est celui des méthodes de type get() qui tiennent sur la même ligne que le pototype de la méthode.
-
Version du 20/3: le fichier E06 ne contient plus qu'une seule collision (un seul carré au lieu de deux)
Version du 14/3: les tests sont inchangées mais les commentaires indiquent quels éléments produisent l'erreur.
-
Cours : Introduction au second semestre / présentation de la programmation modulaire et de la compilation séparée
TP h1: make et makefile
TP h2: présentation des méthodes de développement de programme avec quelques questions théoriques
-
Suivre le MOOC semaine 1 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 / finalisation des groupes
-
Suivre le MOOC semaine 2 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
-
il est fondamental de relire le cours du semestre d'automne sur les entrées-sorties conversationnelles (semaine 13) avant ce cours
-
Suivre le MOOC semaine 3 avant la classe inversée
Cours h1: classe inversée sur static, variable de classe et Surcharge
Cours h2: complément sur static pour un module, Les opérateurs bit à bit
TP h1: opérateurs bit à bit, static à l'échelle d'un module
TP h2: exercices MOOC semaine 3
-
avec un Makefile qui utilise CXX et CXXFLAGS pour C++
-
Suivre le MOOC semaine 4 avant la classe inversée
Cours h1: classe inversée héritage
Cours h2: Architecture Model-View-Control / GTKmm / dessin
TP h1: GTKmm / dessin
TP h2: exercices MOOC semaine 4
Projet : Rendu1 le 21 mars-
ATTENTION IMPORTANTPOUR POUVOIR NOTER VOTRE PROJET ...... LE NOM DU FICHIER QUE VOUS TELECHARGEZ DOIT UTILISER LES DEUX NUMEROS SCIPER DES MEMBRES DU GROUPE POUR LE NOM DU FICHIER (CF RENDU1):VOUS POUVEZ TOUJOURS RE-TELECHARGER UN FICHIER JUSQU'A LA DATE LIMITE , LE DERNIER FICHIER QUI EST TELECHARGE REMPLACE CELUI QUI EST DEJA PRESENT.Recommandation finale: chaque année nous avons plusieurs cas de personnes qui se trompent au moment du téléchargement ; donc, vérifiez que le programme que vous venez de télécharger (upload) est le bon en le récupérant de moodle (download) pour vérifier = RECOMPILER AVEC MAKE et être sûr que c'est la bonne version.
-
Section les plus utiles:
3. Les bases des fenêtres
5. Les boutons
7. Les widgets non-spéciaux, en particulier le 7.1 qui est le label
17. Le dessin
16.1 Pour ouvrir des fichiers avec une interface
-
-
Suivre le MOOC semaine 5 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
-
avec une précision supplémentaire sur le slide 12 comme quoi, selon le standard du C++, la libération d'une instance d'une classe dérivée à partir d'un pointeur sur la classe de base produit un comportement indétermniné.
-
-
Suivre le MOOC semaine 6 avant la classe inversée
Cours h1: classe inversée héritage multiple
Cours h2: GTK Timer / Complément Structuration des données: la liste
TP h1: GTKmm / programmation par événement
TP h2: exercices MOOC semaine 6
-
Cette mise à jour ajoute une précision pour l'exemple 4 qui avait causé une erreur de compilation malgré l'usage de l'opérateur de résolution de portée (qui supprimait l'erreur de compilation de l'exemple3).
Il y a bien une erreur de compilation pour l'exemple4 parce que la mise en oeuvre d'une méthode virtuelle implique la construction de tables de pointeurs de fonction et que pour l'exemple4, le compilateur ne peut pas construire une instance de la classe D parce qu'il y a, par héritage multiple, deux candidats pour la fonction f(). D'où le message d'erreur du compilateur "no unique final overrider for ...".
-
précisions supplémentaires dans slide 11
-
-
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
Projet : Rendu2 le 14 avril
-
ATTENTION IMPORTANTPOUR POUVOIR NOTER VOTRE PROJET ...... LE NOM DU FICHIER ZIP QUE VOUS TELECHARGEZ DOIT UTILISER LES DEUX NUMEROS SCIPER DES MEMBRES DU GROUPE POUR LE NOM DU FICHIER (comme pour le rendu1):VOUS POUVEZ TOUJOURS RE-TELECHARGER UN FICHIER JUSQU'A LA DATE LIMITE , LE DERNIER FICHIER QUI EST TELECHARGE REMPLACE CELUI QUI EST DEJA PRESENT.Recommandation finale: chaque année nous avons plusieurs cas de personnes qui se trompent au moment du téléchargement ; donc, vérifiez que le programme que vous venez de télécharger (upload) est le bon en le récupérant de moodle (download) pour vérifier = RECOMPILER AVEC MAKE et être sûr que c'est la bonne version.
-
-
jour férié
-
EXAMEN ECRIT vendredi 3 mai de 14h15 à 15h30 / nouvelle date à cause de Balélec
Vous avez le droit d'avoir tous vos documents personnels sous forme papier: dictionnaire, livres, cours, exercices, code, projet, etc..
CO1 de Abdelaziz à Miche
CO3 de Milward à Zghari
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
-
la date d'examen a été avancée au 3 mai à cause de Balélec
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
-
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
Projet: rendu final le 19 mai 23h59
-
ATTENTION IMPORTANTPOUR POUVOIR NOTER VOTRE PROJET ...... LE NOM DU FICHIER ZIP QUE VOUS TELECHARGEZ DOIT UTILISER LES DEUX NUMEROS SCIPER DES MEMBRES DU GROUPE POUR LE NOM DU FICHIER (comme pour le rendu1):VOUS POUVEZ TOUJOURS RE-TELECHARGER UN FICHIER JUSQU'A LA DATE LIMITE , LE DERNIER FICHIER QUI EST TELECHARGE REMPLACE CELUI QUI EST DEJA PRESENT.Recommandation finale: chaque année nous avons plusieurs cas de personnes qui se trompent au moment du téléchargement ; donc, vérifiez que le programme que vous venez de télécharger (upload) est le bon en le récupérant de moodle (download) pour vérifier = RECOMPILER AVEC MAKE et être sûr que c'est la bonne version.
-
-
Projet : Oral final vendredi 24 mai entre 16h15 et 19h30, en salles Co 020-021-023
-
Protocole de l'oral individuel sur le projet / suivi d'un questionnaire complémentaire sur l'évaluation du cours
- Atttendre son tour dans la salle CO 020.
- L'enseignant vous appellera individuellement au niveau de la porte entre les salles 020 et 021.
- On passe le tour d'une personne en retard
- Un retard supérieur à un tour est considéré comme une absence (zéro à l'oral et convocation pour oral approfondi ultérieur)
- L'étudiant se dirige vers le SPOT indiqué sur l'horaire et doit se logger sur son compte sur la VM pour présenter le code source, le compiler et l'exécuter si nécessaire.
- Si le projet n'est pas sur la VM, il FAUT ABSOLUMENT venir avec un laptop qui permet d'accéder à l'ensemble du code source
- Si l'accès au code source n'est pas possible une note de zéro est donnée pour l'oral et l'étudiant est convoqué pour un oral approfondi ultérieur
- l'oral se concentre sur l'explication de votre code source pour quelques questions sur des parties du projet ; elles seront posées par l'assistant mais les questions sont définies à l'avance par l'enseignant.
- vous pouvez venir avec une copie du rapport du projet
- L'oral est généralement en avance sur l'horaire ; c'est pourquoi vous devez être présent DANS la salle CO 020 avec de l'avance:
- 10 min d’avance entre 16h20 et 17h00,
- 20 min d’avance entre 17h et 18h,
- 30 min d'avance après 18h00.
- Immédiatement après l'oral, l'assistant vous remettra une feuille d'évaluation détaillée du cours. Vous pourrez vous assoir à une table libre pour la remplir à votre rythme. Les questions sont réparties en deux groupes principaux:
- - questions standardisées sur l'enseignant, le contenu, les assistants, le support de cours, exercices, test et quantité de travail sur 14 semaines
- - questions que j'ai demandé de rajouter grâce à vos remarques fournies dans l'évaluation indicative. Cela permettra de savoir ce que vous voulez modifier ou conserver dans ce cours. Cette partie porte sur les points suivants:
- 7 semaines concentrées, 3 rendus du projet, le programme de démo (ou pas), le MOOC et GTKmm.
- Une zone libre permet d'ajouter d'autres propositions.
- Atttendre son tour dans la salle CO 020.
-
-
si nécessaire, au cas par cas, oral approfondi avec l'enseignant (ex: résultat à l'oral précédent trop faible ou détection de plagiat)