Libellé du cours : | Programmation orientée objet pour l'optimisation |
---|---|
Département d'enseignement : | MIN / Mathématiques - Informatique |
Responsable d'enseignement : | Monsieur MAXIME OGIER |
Langue d'enseignement : | Français |
Ects potentiels : | 0 |
Grille des résultats : | |
Code et libellé (hp) : | LE4_8_SI_MIN_POO - Programmation orientée objet |
Equipe pédagogique
Enseignants : Monsieur MAXIME OGIER / Monsieur DIEGO CATTARUZZA
Intervenants extérieurs (entreprise, recherche, enseignement secondaire) : divers enseignants vacataires
Résumé
Ce cours vise à apporter de nouvelles connaissances autour du développement d’algorithmes efficaces pour résoudre des problèmes d’optimisation sous contraintes. L’implémentation de ces algorithme est réalisée selon le paradigme de la programmation orientée objet. L’objectif est de pouvoir développer des applications performantes, en terme d’algorithmique, pour répondre à des problématiques industrielles complexes. Nous aborderons donc des problèmes d’optimisation sous contraintes pour lesquels il existe de très nombreuses solutions (il est impossible de toutes les énumérer), et on cherche à trouver la meilleure des solutions (selon une fonction objectif que l’on cherche à minimiser). Par ailleurs, nous cherchons à résoudre ces problèmes sur des instances de grande taille (au sens où il y a de nombreuses données). Nous verrons dans ce cours différents outils algorithmiques qui permettent de résoudre efficacement de tels problèmes. Ce cours est basé sur la langage Java. Le contenu résumé du cours est le suivant : - modélisation objet et quelques design patterns (singleton, factory) ; - méthodes constructives pour résoudre un problème ; - méthodes de recherche locale ; - méthodes méta-heuristiques ; - approches exactes à base de programmation linéaire.
Objectifs pédagogiques
À l’issue du cours, l’élève sera capable de : - développer un programme selon le paradigme de la programmation orientée objet ; - connaître les bonnes pratiques de développement en programmation orientée objet ; - choisir et utiliser les bonnes structures de données (liste, ensemble, table associative) ; - savoir ce qu’est un design pattern, et en utiliser quelques-uns ; - connaître des méthodes algorithmiques efficaces afin de résoudre un problème d’optimisation ; - développer un système d’information performant en langage orientée objet : la performance est liée à la capacité à résoudre efficacement une problématique complexe. Contribution du cours au référentiel de compétences ; à l’issue du cours, l’étudiant aura progressé dans : - concevoir un système ; - réaliser, développer un système ; - mettre en place des protocoles de tests ; - réaliser et exécuter des jeux de tests ; - réaliser des documentations techniques de projet. Connaissances travaillées: - vocabulaire de la programmation orientée objet ; - bonnes pratiques de développement en programmation orientée objet ; - implémentation des structures de données (liste, ensemble, table associative) ; - méthodes efficaces pour résoudre un problème d’optimisation ; - design patterns. Compétences développées: - bonnes pratiques de développement en programmation orientée objet ; - réaliser des tests unitaires ; - réaliser du code propre ; - commenter son code ; - concevoir un programme dans un langage de programmation orientée objet ; - développer un algorithme efficace.
Objectifs de développement durable
Modalités de contrôle de connaissance
Contrôle Terminal
Commentaires: Le cours est évalué sur le projet.
Les élèves doivent présenter leur travail lors d'une soutenance finale.
Il y a une note de groupe, et des coefficients individuels qui permettent d'aboutir à une note individuelle.
Ressources en ligne
- Pour chaque séance, sujets disponibles sur Moodle.
Pédagogie
- Ce cours consiste en une première partie sous forme de séances en salles machines, puis une seconde partie sous forme de projet. - Pour la première partie, chaque séance, un sujet, sous forme d’une étude de cas, permet de découvrir au fur et à mesure les nouvelles notions : d’abord l’aspect théorique, puis on implémente en pratique. - L’enseignant ne fait pas une correction systématique, mais il peut répondre à toutes les questions des élèves. Les élèves doivent donc être actifs. - Un travail en dehors des séances est nécessaire. - Dans la deuxième partie, les élèves doivent réaliser un projet en groupe dont l'objectif est la réalisation d’un algorithme efficace pour résoudre une problématique industrielle complexe. - La qualité du code développé a une grande importance.
Séquencement / modalités d'apprentissage
Nombre d'heures en CM (Cours Magistraux) : | 0 |
---|---|
Nombre d'heures en TD (Travaux Dirigés) : | 64 |
Nombre d'heures en TP (Travaux Pratiques) : | 0 |
Nombre d'heures en Séminaire : | 0 |
Nombre d'heures en Demi-séminaire : | 0 |
Nombre d'heures élèves en TEA (Travail En Autonomie) : | 0 |
Nombre d'heures élèves en TNE (Travail Non Encadré) : | 0 |
Nombre d'heures en CB (Contrôle Bloqué) : | 0 |
Nombre d'heures élèves en PER (Travail PERsonnel) : | 0 |
Nombre d'heures en Heures Projets : | 0 |
Pré-requis
- Notions d’algorithmique. - Connaître les structures de données de base (tableau, liste chaînée, ensemble). - Savoir développer un programme en programmation orientée objet. - Comprendre un diagramme de classe UML.