En raison de la crise du COVID-19, les informations ci-dessous sont susceptibles d’être modifiées,
notamment celles qui concernent le mode d’enseignement (en présentiel, en distanciel ou sous un format comodal ou hybride).
5 crédits
30.0 h + 30.0 h
Q1
Enseignants
Van Roy Peter;
Langue
d'enseignement
d'enseignement
Anglais
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. Entre autres, le cours aborde:
- la programmation fonctionnelle et d'ordre supérieur, la programmation 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 y compris dans le langage Erlang,
- une présentation rigoureuse de l'état mutatif et son utilité,
- les concepts de verrou, moniteur et transactions.
Méthodes d'enseignement
En raison de la crise du COVID-19, les informations de cette rubrique sont particulièrement susceptibles d’être modifiées.
- 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
En raison de la crise du COVID-19, les informations de cette rubrique sont particulièrement susceptibles d’être modifiées.
- 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
INFO
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