Projets individuels de programmation (PI)

Promotion 2012 — version 11/02/2014

Calendrier

Affectation des projets
le mercredi 12 février 2014 Mise en ligne des sujets sur la présente page web
le vendredi 7 mars 2014 Date limite pour remplir la feuille de choix
le vendredi 14 mars 2014 --> Affectation des projets
le mardi 3 juin 2014 à 8h00 du matin Remise du projet (rapport et programme). sur la page de dépôt
du 10 au 20 juin 2014 Interrogation orale individuelle à la date choisie le 3 juin 2014 au soir au plus tard.

Il faudra que vous indiquiez absolument tous vos créneaux possibles (plusieurs sur plusieurs journées), sachant que ces soutenances ne vous dispensent pas de suivre vos cours habituels. Par ailleurs il est demandé une seule réponse par binôme (concertez vous avant de répondre) et de vous assurer que vous n'êtes pas convoqués à d'autres examens/contrôles dans les périodes que vous indiquerez. Il est conseillé de planifier le travail sur le projet en tenant compte des autres enseignements. Il ne faut pas hésiter à commencer l'analyse du sujet et la conception du programme dès après le choix du sujet, et à travailler ensuite régulièrement pendant le temps nécessaire. Il ne faut surtout pas attendre la dernière semaine pour commencer à programmer, car la mise au point d'un programme entièrement écrit prend le plus souvent beaucoup plus longtemps que l'écriture du premier jet du programme !

Liste des projets d'informatique proposés


Difficulté indicative des sujets, * = facile, ** = dans la moyenne, *** = difficile.
Il peut y avoir multiples degrés de difficulté lorsque le sujet présente des questions facultatives.
Sujets proposés par les enseignants d'Informatique.
  Algorithme Génétique pour Pierre-Feuille-Ciseaux*Stéphane Graham-Lengrand
  Reconstruction de puzzles*Philippe Chassignet
  Construction de graphes contraints*-**Gilles Schaeffer
  Sudoku*-**Jean-Pierre Tillich
  Evolutionary Algorithms *-*** Benjamin Doerr
  Writing a ray-tracer**Stephane Redon
  Plongement et dessin de graphes planaires maximaux **Eric Fusy
  Pi, gamma, e et d’autres ... à très grande vitesse**Bruno Salvy
  A Concurrent Text Editor***Karthikeyan Bhargavan
  Une stratégie gagnante pour Puissance 4***François Pottier
  Stratégie probabiliste pour l’évaluation d’arbres***Frédéric Magniez
  Le Théorème des quatre couleurs***Benjamin Werner

Projet individuel de programmation

Chaque élève devra réaliser un projet de programmation. Il s'agit d'un travail personnel d'une quarantaine d'heures environ conduisant à la rédaction d'un programme complet de 500 à 1000 lignes. Les projets sont normalement menés en binôme, chaque élève étant cependant noté individuellement. Le projet donnera lieu à la remise d'un rapport d'une dizaine de pages et sera noté après une soutenance orale.

La réalisation des projets s'étalera de la mi-mars à la fin mai, dans le cadre du cours Algorithmique et programmation (INF431). Il est fortement recommandé de répartir son effort sur cette période.

1.1 Choix des sujets et feuille de choix

Les élèves choisiront de préférence leur projet parmi les sujets proposés dans le présent document par les enseignants de l'école. Tous les élèves doivent choisir leur binôme et leur projet à la date de Choix du Projet, spécifiée dans la section calendrier. Inversement, aucune priorité particulière ne sera accordée aux choix rendus plus tôt; il est donc inutile de précipiter ce choix. Tous les élèves sont donc invités à bien lire et évaluer tous les sujets avant de faire leur choix.

Pour éviter que trop d'élèves choisissent le même sujet et provoquent ainsi la surcharge de l'auteur (qui sera aussi, autant que possible, le correcteur, voir ci-dessous), il est institué un numerus clausus, fixé à 15 binômes par sujet.1

Ceux qui choisissent un sujet dans le présent document devront donner trois choix de sujets, dans un ordre de préférence clairement identifié. Les conflits dûs au numerus clausus pourront être résolus par négociation entre les élèves, le responsable des projets, Benjamin Doerr, les auteurs des sujets, et les responsables du cours, François Pottier et Benjamin Werner. En dernier ressort la direction des études tranchera.

Il doit être évident maintenant qu'il est utile de s'intéresser le plus tôt possible au choix d'un sujet de projet.

1.2 Cas particuliers

Les élèves peuvent, au lieu de choisir parmi les sujets conçus par les enseignants, proposer un sujet personnel. Un sujet personnel doit être agréé par un enseignant d'informatique du DIX qui jugera si sa difficulté (algorithmique et de programmation) et son intérêt pédagogique sont comparables à ceux des autres sujets. Cet enseignant sera le correspondant des élèves durant la réalisation du projet et il doit être mentionné sur la feuille de choix. Les élèves intéressés par un sujet personnel doivent faire leur proposition auprès de Benjamin Doerr assez tôt pour qu'en cas de refus d'agrément de celle-ci, ils puissent faire leur choix dans les sujets « officiels ».

Il est également possible, à titre exceptionnel, de traiter un sujet individuellement. En revanche, aucune équipe formée de plus deux élèves ne pourra être formée.

1.3 Choix du langage de programmation

Java étant le langage de programmation adopté pour ce cours, les projets sont conçus pour être réalisés en Java. Cependant le choix d'un autre langage de programmation est possible, l'impératif étant que le programme puisse être effectivement exécuté pendant la soutenance sur les stations Unix des salles info (utilisées en local ou comme terminaux), ou encore sur du matériel personnel ou prêté par un laboratoire, à condition qu'il soit mis en place par les élèves le jour de la soutenance dans la salle prévue à cet effet. Quel que soit le langage utilisé, il est vivement recommandé de structurer les programmes et de les commenter.

1.4 Le rapport de projet

Un rapport écrit fait partie intégrante du projet; une version électronique (en pdf) du rapport sera déposée électroniquement selon la procédure déjà employée en TP (upload) avant la date de Remise du Projet, spécifiée dans la section calendrier .

Ce rapport doit être rédigé avec soin et présenter une réelle synthèse du travail effectué. Il comporte deux parties : le rapport proprement dit et une notice d'utilisation du programme claire et complète, illustrée de quelques traces d'exécution sur des exemples représentatifs, lorsque le sujet le permet. Le rapport devrait comporter, hors les exemples, une dizaine de pages environ. Les rapports bâclés ou inutilement longs2 seront pénalisés.

Le rapport proprement dit pourra comporter par exemple une brève introduction présentant le sujet du projet (il ne s'agit pas de recopier le détail de l'énoncé, mais de résumer avec clarté le travail proposé), une présentation de l'architecture du programme, des structures de données choisies et des algorithmes retenus (s'ils ne sont pas donnés dans le sujet, et en les justifiant brièvement s'il y a lieu), éventuellement un tableau des performances du programme et une conclusion indiquant les améliorations envisagées ou les développements suggérés. Le rapport doit mettre en valeur les aspects essentiels du programme sans se perdre dans des détails d'implantation. Un bon rapport de projet doit pouvoir servir de base à un exposé clair et concis.

1.5 Temps consacré au projet

Quelques projets permettent des développements conséquents. Certains élèves pourront donc être tentés de consacrer 60 heures voire 120 heures de travail et parfois beaucoup plus à leur projet.3 Ceci peut être passionnant mais n'est pas raisonnable quand on considère les objectifs de formation générale de l'École Polytechnique. À partir du moment où le sujet est convenablement traité, doubler le temps consacré au projet changera peu de chose à la note finale et augmentera la sévérité du jury sur la moindre faute de conception. De plus, le temps ainsi pris sur vos études risque de vous pénaliser dans d'autres disciplines.

1.6 Suivi des projets

Pour toute demande d'éclaircissement sur un sujet de projet, les élèves sont invités à prendre contact avec les enseignants responsables des sujets. Ces prises de contact se feront facilement par courrier électronique ; si les élèves ou l'enseignant le souhaitent, un contact plus direct pourra être organisé ensuite. Les coordonnées de tous les enseignants se trouvent dans cette page.

Par ailleurs, les énoncés de projets seront complétés par des pages de suivi et ces pages peuvent évoluer en réponse à des questions d'élèves. Il importe donc, le cas échéant, de consulter les pages de suivi régulièrement.

Le projet est un travail personnel qui laisse une large place à l'autonomie des élèves. Ceci n'empêche pas, bien au contraire, de demander conseil…

  • Lorsque l'on travaille de façon isolée, il est possible de perdre beaucoup de temps à mettre au point un programme parce que celui-ci est mal organisé ou utilise de mauvais algorithmes, alors que le conseil d'un enseignant permet de corriger le tir.
  • On peut également perdre énormément de temps face à une difficulté que l'auteur du projet juge non-essentielle, et qu'il est prêt à lever par une indication. Il va de soi que, si vous pensez être dans ce cas, la précision de l'indication correspond à celle de votre question.
  • L'évaluation des projets fait une place assez importante à la profondeur du travail réalisé. L'énoncé de la plupart des sujets spécifie un travail minimal, puis décrit sommairement des extensions possibles. Le conseil de l'auteur du projet peut vous aider à identifier les extensions les plus adéquates en fonction non seulement de l'avancement de votre projet, mais aussi du temps qui reste à courir.

Les élèves peuvent aussi contacter le responsable des projets, Benjamin Doerr, pour toute question concernant les projets : appréciation du niveau relatif de difficulté pour le choix de sujet, contact à établir avec un enseignant (mais essayez d'abord le courrier électronique), difficulté de compréhension, etc. Ils peuvent le joindre (de préférence) par courrier électronique (lastname@lix.polytechnique.fr), par téléphone, voire son bureau.

D'autre part, pour les blocages dûs plus directement au matériel et au système, les élèves peuvent solliciter l'aide d'un enseignant du LIX. Ils peuvent s'adresser à la secrétaire du département (Catherine Bensoussan), qui les aiguillera sur un enseignant disponible.

1.7 Sauvegardes des projets

Pour éviter les pertes de fichiers, il convient d'effectuer régulièrement des sauvegardes. Pour le travail réalisé sur les stations Unix, le processus est automatique : la DSI effectue tous les jours une procédure de sauvegarde des répertoires de tous les utilisateurs de l'environnement UNIX.

Ce n'est bien sûr pas le cas pour le travail effectué sur un PC personnel. Il conviendra donc dans ce cas d'effectuer une copie de son travail, après chaque séance, soit vers l'environnement UNIX via le réseau, soit sur une clef USB (plus pratique qu'une disquette). Dans tous les cas penser à utiliser deux copies ou plus en alternance, afin de parer aux fausses manœuvres ou aux défaillances éventuelles de disquette ou de réseau.

Les élèves sont entièrement responsables de la sauvegarde de leur projet. En particulier, la défaillance d'un disque dur ou d'une clef USB ne peut être considérée comme un événement imprévisible.

1.8 Notation du projet d'informatique

Les élèves devront remettre leur projet à la date de Remise du Projet spécifiée dans la section calendrier. Le rapport et les sources du projet sont déposés électroniquement (en pdf) suivant la procédure utilisée en TP (upload) .

Note : Le rapport et le programme déposé à la date de remise forment la base d'analyse et de notation par le correcteur, la soutenance intervenant comme complément. Il est donc nécessaire que le programme soit terminé le jour de la remise, même si la soutenance n'a lieu que beaucoup plus tard.

La soutenance du projet est une interrogation orale d'une durée de 45 mn. Les deux élèves du binôme doivent participer à cette interrogation. Elle débutera par un exposé de 20 à 25 minutes sur transparents ou projection depuis un portable, consistant en une brève description du problème posé, de la solution proposée et du travail réalisé pour la mettre en œuvre. Cette présentation sera suivie d'une démonstration du programme pendant 10 mn environ, puis des questions des examinateurs. La démonstration sur ordinateur pourra être intégrée dans l'exposé proprement dit. Les élèves utilisant un matériel particulier pour leur soutenance préviendront les enseignants concernés.

La note de projet tient compte des points suivants :

Conception :
compréhension du sujet, qualité et justification des structures de données et des algorithmes employés, etc.
Programmation :
structure et lisibilité du programme, efficacité en temps et en place, esthétique et ergonomie de l'interface, etc.
Rapport :
qualité de la synthèse, clarté du document, présentation des performances, pertinence et complétude des instructions d'utilisation, etc.
Oral :
organisation et clarté de la présentation, préparation de la démonstration, choix et pertinence des exemples, interactivité, etc.

Les deux premiers points sont, bien entendu, les plus importants (environ 2/3 de la note). Si un sujet demande une analyse substantielle dans le rapport, celle-ci est prise en compte dans l'évaluation de la conception du sujet.

La profondeur du travail réalisé compte pour environ la moitié des points Conception et Programmation. Un travail parfait mais minimal, sans grande difficulté et s'attachant strictement à un énoncé de base facile, ne récoltera qu'une note moyenne. En gros, un sujet facile sera noté sur 16, un sujet moyen sur 18, et un sujet difficile sur 20. Néanmoins il est possible d'avoir 20 même avec un sujet de base facile, si on y ajoute des extensions plus difficiles; mais cela demande autant de travail que la réalisation d'un sujet plus complexe. Inversement un travail qui écorne un sujet difficile, par exemple en faisant l'impasse sur l'algorithme proposé, verra sa note diminuée. Le tableau 1 donne une cotation indicative de la difficulté des différents sujets proposés.

Le jury note également la qualité de la présentation orale des élèves. La difficulté de l'oral est de faire une présentation qui ne soit pas une simple récitation du rapport et d'y intégrer la démonstration sur ordinateur de manière naturelle dans un temps très limité. Ceci requiert une attitude dynamique et une préparation sérieuse. Une répétition est toujours utile. Il faut également s'attendre à des questions parfois difficiles du jury. Certaines questions portent sur le programme et sur la démonstration qui en est faite. Chacun des élèves d'un binôme doit être capable de délimiter clairement sa contribution.

Dans le cas d'un sujet proposé dans cette page par un des enseignants d'informatique, le jury est en général réduit à cet enseignant. Cependant, puisque certains enseignants ayant proposé un sujet ne seront pas des correcteurs, et pour équilibrer la charge des autres correcteurs, certains élèves seront jugés par un autre enseignant que celui qui a donné le sujet ; le nombre de ces « échanges » sera publié à l'avance.


1
Ce nombre est le résultat de la division de l'effectif de la promotion par le nombre de sujets, multiplié par un certain facteur de souplesse.
2
Certains sujets qui comportent explicitement des analyses de cas ou d'algorithmes peuvent justifier un rapport plus long.
3
En particulier, le développement d'une interface graphique conséquente est une tâche considérable qui n'entre pas dans l'esprit du projet informatique

Ce document a été traduit de LATEX par HEVEA