Computer language concepts

lingi1131  2019-2020  Louvain-la-Neuve

Computer language concepts
Note du 29 juin 2020
Sans connaitre encore le temps que dureront les mesures de distances sociales liées à la pandémie de Covid-19, et quels que soient les changements qui ont dû être opérés dans l’évaluation de la session de juin 2020 par rapport à ce que prévoit la présente fiche descriptive, de nouvelles modalités d’évaluation des unités d’enseignement peuvent encore être adoptées par l’enseignant ; des précisions sur ces modalités ont été -ou seront-communiquées par les enseignant·es aux étudiant·es dans les plus brefs délais.
5 crédits
30.0 h + 30.0 h
Q2
Enseignants
Van Roy Peter;
Langue
d'enseignement
Anglais
Préalables
Ce cours suppose acquise la maîtrise de la programmation dans un langage de haut niveau telle qu'enseignée dans le cours LEPL1402.
Thèmes abordés
  • Paradigmes de programmation concurrente (y compris état partagé, passage de messages et dataflow déterministe)
  • Concepts majeurs de la programmation (y compris évaluation paresseuse, non-déterminisme, agent, verrou, moniteur, transaction, interblocage, programmation d'ordre supérieur, compositionnalité)
  • Techniques de raisonnement et de conception pour la programmation concurrente
  • Applications pratiques dans plusieurs domaines (y compris simulation des circuits logiques, gestion des ascenseurs, gestion des transactions)
Acquis
d'apprentissage

A la fin de cette unité d’enseignement, l’étudiant est capable de :

1
  • définir avec précision et utiliser à bon escient dans les programmes de taille moyenne les concepts'clé de programmation;
  • définir les principaux paradigmes de la programmation concurrente (état partagé, passage de messages et concurrence déclarative), avec les concepts qu'ils contiennent et les propriétés qu'ils donnent aux programmes;
  • expliquer les relations (similitudes, différences) entre ces différents paradigmes ;
  • expliquer le lien entre les langages de programmation et les principaux paradigmes de programmation concurrente ;
  • écrire des programmes de taille moyenne dans ces paradigmes de programmation concurrente.
  • penser à l'aide d'abstractions (raisonner correctement sur un système qui comprend plusieurs couches d'abstractions, et définir de nouvelles abstractions pour simplifier la résolution d'un problème)
 

La contribution de cette UE au développement et à la maîtrise des compétences et acquis du (des) programme(s) est accessible à la fin de cette fiche, dans la partie « Programmes/formations proposant cette unité d’enseignement (UE) ».
Contenu
  • Paradigmes de programmation concurrente (état partagé, passage de messages et dataflow déterministe).
  • 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).
Méthodes d'enseignement
  • Cours magistral chaque semaine
  • 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
  • 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
  • Test dispensatoire 25% (vers la 7e semaine)
  • Projet 25%
  • Examen final (50%) (ou 75% si on refait la partie du test)
Le projet est obligatoire et se fait pendant le quadrimestre.  Il ne peut être fait qu'une fois et il compte pour toute l'année académique.
Autres infos
Prérequis:
  • Cours de programmation de seconde année Informatique 2 (LFSAB 1402) ou équivalent.
Ressources
en ligne
LINGI1131 Moodle: https://moodleucl.uclouvain.be/course/view.php?id=1824
Bibliographie
Peter Van Roy et Seif Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press, 2004
Support de cours
  • Concepts, Techniques, and Models of Computer Programming
Faculté ou entité
en charge
INFO


Programmes / formations proposant cette unité d'enseignement (UE)

Intitulé du programme
Sigle
Crédits
Prérequis
Acquis
d'apprentissage
Master [60] en sciences informatiques

Master [120] en sciences informatiques

Mineure en sciences de l'ingénieur : informatique (accessible uniquement pour réinscription)