Enseignants
Langue
d'enseignement
d'enseignement
Préalables
Ce cours suppose acquises les concepts, paradigmes et sémantique des langages de programmation visés par le cours LINFO1104
Thèmes abordés
- paradigmes de programmation concurrente (état partagé, passage de messages et concurrence déclarative)
- Concepts majeurs de la programmation qui inclut fonction, objet, classe, abstraction, instantiation, héritage, état, encapsulation, concurrence, dataflow, évaluation paresseuse, non-déterminisme, agent (objet actif), verrou (lock), moniteur, transaction, interblocage (deadlock), programmation d'ordre supérieur, compositionnalité, etc.
- Techniques de raisonnement et de conception avec les différents paradigmes pour concevoir des programmes corrects
- Applications pratiques dans plusieurs domaines (par exemple, la simulation des circuits logiques, la simulation des ascenseurs, un gestionnaire de transactions).
Acquis
d'apprentissage
d'apprentissage
A la fin de cette unité d’enseignement, l’étudiant est capable de : | |
1 |
Eu égard au référentiel AA du programme « Bachelier en sciences informatiques », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
Les étudiants ayant suivi avec fruit ce cours seront capables de
|
Contenu
Le but de ce cours est de présenter des concepts avancés des langages de programmation, en utilisant la programmation concurrente comme principe organisateur. Entre autres, le cours aborde:
- la programmation fonctionnelle, d'ordre supérieur, et paresseuse,
- la programmation concurrente sous ses trois formes principales, à savoir le dataflow déterministe, la concurrence par passage de messages et la concurrence par état partagé,
- une présentation rigoureuse du concept de déclarativité,
- des techniques avancées de conception d'algorithmes déclaratifs,
- la sécurité dans l'abstraction des données,
- la conception des systèmes multi-agents avec un accent particulier au langage Erlang et ses concepts,
- une présentation rigoureuse de l'état mutatif et son utilité,
- les concepts de verrou, moniteur et transaction.
Méthodes d'enseignement
- Cours magistral chaque semaine (en présentiel ou distanciel, selon les règles en vigueur).
- Séances de travaux pratiques en salle informatique chaque semaine, pour résoudre des problèmes simplifiés en utilisant les concepts vu au cours.
- Un grand projet de conception et d'implémentation pour appliquer ces concepts dans le cadre d'une application plus complexe.
Modes d'évaluation
des acquis des étudiants
des acquis des étudiants
- Test dispensatoire 25% (vers la 7e semaine)
- Projet 25%
- Examen final (50%) (ou 75% si on refait la partie du test)
Ressources
en ligne
en ligne
Moodle LINFO1131.
Bibliographie
Peter Van Roy and Seif Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press, 2004.
Support de cours
- Peter Van Roy and Seif Haridi, Concepts, Techniques, and Models of Computer Programming
- Course slides, lectures, and videos
Faculté ou entité
en charge
en charge
Programmes / formations proposant cette unité d'enseignement (UE)
Intitulé du programme
Sigle
Crédits
Prérequis
Acquis
d'apprentissage
d'apprentissage
Approfondissement en sciences informatiques