5.00 crédits
30.0 h + 30.0 h
Q1
Cette unité d’enseignement n’est pas accessible aux étudiants d’échange !
Enseignants
Jodogne Sébastien; Sadre Ramin;
Langue
d'enseignement
d'enseignement
Français
Préalables
Ce cours suppose acquises les notions de base de la programmation (instructions, variables, boucles, conditions,...) telles qu'enseignées dans le cours LINFO1101 ou LSINC1101.
Le(s) prérequis de cette Unité d’enseignement (UE) sont précisés à la fin de cette fiche, en regard des programmes/formations qui proposent cette UE.
Le(s) prérequis de cette Unité d’enseignement (UE) sont précisés à la fin de cette fiche, en regard des programmes/formations qui proposent cette UE.
Thèmes abordés
- Le langage Java ;
- Types abstraits de données ;
- Structures linéaires et arborescentes;
- Programmation et algorithme récursifs ;
- Technique de raisonnement sur l'exactitude des programmes ;
- Notions de complexité calculatoire d'un algorithme ;
- Programmation fonctionnelle ;
- Modélisation et programmation orientée-objet ;
- Programmation parallèle ;
- Test de programmes.
- Types abstraits de données ;
- Structures linéaires et arborescentes;
- Programmation et algorithme récursifs ;
- Technique de raisonnement sur l'exactitude des programmes ;
- Notions de complexité calculatoire d'un algorithme ;
- Programmation fonctionnelle ;
- Modélisation et programmation orientée-objet ;
- Programmation parallèle ;
- Test de programmes.
Acquis
d'apprentissage
d'apprentissage
A la fin de cette unité d’enseignement, l’étudiant est capable de : | |
AA 1.2, 1.5- AA 2.4 - AA 4.3, 4.4, 4.5 - AA 5.1, 5.3 | Eu égard au référentiel AA du programme « Bachelier en Sciences de l'Ingénieur, orientation ingénieur civil », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants : - AA 1.2, 1.5 - AA 2.4 - AA 4.3, 4.4, 4.5 - AA 5.1, 5.3 Plus précisément, au terme du cours, l'étudiant sera capable de : - faire un choix justifié entre plusieurs représentations des informations et plusieurs algorithmes pour les traiter, - concevoir des (fragment de) programme dans un style fonctionnel, - raisonner sur des (fragments de) programmes : complexité des algorithmes et efficacité des programmes les mettant en oeuvre, raisonnement récursif, - appliquer des principes de modélisation orientée-objet, - concevoir et appliquer des méthodes de test d'un programme, - concevoir un programme parallèle simple Les étudiants auront développé des compétences méthodologiques et opérationnelles. En particulier, ils auront développé leur capacité à : - Analyser un problème de taille moyenne, de proposer une solution informatique pour le résoudre et de la mettre en oeuvre dans le langage Java. |
Contenu
Cette unité d'enseignement porte sur :
- Introduction à Java : compilation, byte-code, machine virtuelle, type primitifs, strings, tableaux
- Types abstraits de données ;
- Structures linéaires et arborescentes, et leurs applications ;
- Formulation récursive d'une solution et algorithmes récursifs ;
- Technique de raisonnement : préconditions, postconditions, invariants
- Notions de complexité calculatoire et analyse de la complexité temporelle et spatiale d'un algorithme ;
- Programmation fonctionnelle et programmation d'ordre supérieur
- Modélisation orientée-objet (héritage, composition, réutilisation, polymorphisme, invariant de classe) ;
- Introduction aux design patterns ;
- Méthodes de tests et de validation de programmes ;
- Introduction à la parallélisation : notion de thread et mécanismes de synchronisation.
Les étudiants ayant suivi avec fruit ce cours seront capables de
- Introduction à Java : compilation, byte-code, machine virtuelle, type primitifs, strings, tableaux
- Types abstraits de données ;
- Structures linéaires et arborescentes, et leurs applications ;
- Formulation récursive d'une solution et algorithmes récursifs ;
- Technique de raisonnement : préconditions, postconditions, invariants
- Notions de complexité calculatoire et analyse de la complexité temporelle et spatiale d'un algorithme ;
- Programmation fonctionnelle et programmation d'ordre supérieur
- Modélisation orientée-objet (héritage, composition, réutilisation, polymorphisme, invariant de classe) ;
- Introduction aux design patterns ;
- Méthodes de tests et de validation de programmes ;
- Introduction à la parallélisation : notion de thread et mécanismes de synchronisation.
Les étudiants ayant suivi avec fruit ce cours seront capables de
- de concevoir des programmes Java
- analyser des programmes en fonction de leur performance
- de prouver leurs exactitudes de programmes à l'aide d'invariants
- appliquer les principes de la programmation orientée-objet tels que généricité, abstraction, composition et réutilisation
- concevoir et mettre en oeuvre des variantes des algorithmes étudiés dans des programmes Java de haute qualité.
- concevoir et manipuler des structures linéaires et arborescentes et récursives simples
- concevoir des tests pour des programmes
- concevoir des approches de programmation fonctionnelles pour résoudre de petits problèmes algorithmiques
- utiliser à bon escient les designs patterns
- concevoir des programmes parallèles simples avec des mécanismes de synchronisation
Méthodes d'enseignement
Le cours adopte une approche de classe inversée.
La partie théorique du cours est disponible sous forme de capsules vidéos à regarder à domicile.
Des exercices sont disponibles en ligne à tout moment sur la plateforme INGInious, afin de mettre en pratique les notions théoriques. Durant l'horaire des séances de travaux pratiques, des assistants ou des tuteurs sont disponibles en distanciel pour apporter du support aux étudiant·e·s.
Chaque semaine, une séance de restructuration organisée en présentiel ou en distanciel permet aux étudiant·e·s de poser leurs questions et/ou d'assister à la résolution d'exercices sélectionnés par les enseignants.
L'apprentissage est de l'entière responsabilité de chaque étudiant·e. Pour réussir l'examen, il est impératif que l'étudiant·e programme régulièrement en Java, en utilisant IntelliJ.
La partie théorique du cours est disponible sous forme de capsules vidéos à regarder à domicile.
Des exercices sont disponibles en ligne à tout moment sur la plateforme INGInious, afin de mettre en pratique les notions théoriques. Durant l'horaire des séances de travaux pratiques, des assistants ou des tuteurs sont disponibles en distanciel pour apporter du support aux étudiant·e·s.
Chaque semaine, une séance de restructuration organisée en présentiel ou en distanciel permet aux étudiant·e·s de poser leurs questions et/ou d'assister à la résolution d'exercices sélectionnés par les enseignants.
L'apprentissage est de l'entière responsabilité de chaque étudiant·e. Pour réussir l'examen, il est impératif que l'étudiant·e programme régulièrement en Java, en utilisant IntelliJ.
Modes d'évaluation
des acquis des étudiants
des acquis des étudiants
Les étudiants sont évalués individuellement lors d'un examen oral. L'examen oral a lieu en fin quadrimestre et a pour objectif de vérifier non seulement la connaissance de la matière, mais également la capacité à appliquer les connaissances acquises pour écrire des programmes.
Une interrogation optionnelle a lieu à la moitié du quadrimestre, comptant pour maximum deux points dans la note finale du cours, et uniquement si cela est au bénéfice de l'étudiant·e.
La note finale est calculée selon la formule : note_finale_sur_20 = max(interrogation_sur_2 + examen_sur_18, examen_sur_20).
Les points obtenus pour l'interrogation seront conservés pour la session d'août.
Une interrogation optionnelle a lieu à la moitié du quadrimestre, comptant pour maximum deux points dans la note finale du cours, et uniquement si cela est au bénéfice de l'étudiant·e.
La note finale est calculée selon la formule : note_finale_sur_20 = max(interrogation_sur_2 + examen_sur_18, examen_sur_20).
Les points obtenus pour l'interrogation seront conservés pour la session d'août.
Ressources
en ligne
en ligne
https://lepl1402.readthedocs.io/ (pour les liens vers les slides et contenu du cours)
https://moodleucl.uclouvain.be/course/view.php?id=12884 Moodle (pour la communication avec les étudiants)
https://inginious.info.ucl.ac.be/course/LEPL1402 pour les exercices
https://moodleucl.uclouvain.be/course/view.php?id=12884 Moodle (pour la communication avec les étudiants)
https://inginious.info.ucl.ac.be/course/LEPL1402 pour les exercices
Faculté ou entité
en charge
en charge
SINC