Concepts des langages informatiques [ LINGI1131 ]
5.0 crédits ECTS
30.0 h + 30.0 h
1q
> Horaire
| Enseignant(s): |
Van Roy Peter ;
|
Langue d'enseignement: |
Français
|
| Lieu du cours: |
Louvain-la-Neuve
|
Compétences à acquérir: |
Les étudiants ayant suivi avec fruit ce cours seront capables de
- définir avec précision et utiliser à bon escient dans les programmes de taille moyenne les concepts-clé de programmation;
- définir précisemment les principaux paradigmes de programmation, avec les concepts qu'ils contiennent et les propriétés qu'ils donnent à des programmes;
- expliquer comment les langages fonctionnent dans les paradigmes de programmation, ainsi que les relations entre les paradigmes;
- apprendre rapidement de nouveaux langages;
- concevoir de nouveaux langages ciblant une application quelconque;
- interfacer différents langages 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;
- écrire des programmes de taille moyenne dans ces paradigmes de programmation concurrente.
Les étudiants auront développé des compétences méthodologiques et opérationnelles. En particulier, ils ont développé leur capacité à
- penser à l'aide d'abstractions (raisonner correctement sur ''un système qui comprend plusieurs couches d'abstractions, et de définir de nouvelles abstractions pour simplifier la résolution d'un problème).
|
| Thèmes abordés: |
- Concepts, techniques et paradigmes des langages de programmation
- Paradigmes de programmation concurrente
- Techniques de raisonnement et de conception pour la programmation
- Programmation pratique et applications pratiques
|
| Descriptif: |
- Compréhension profonde des concepts majeurs des langages de programmation. Les concepts sont présentés dans un cadre uniforme. Le cours est organisé autour d'une présentation progressive et cohérente des différents paradigmes de programmation concurrente.
- 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.
- Description d'un large éventail des paradigmes de programmation, relation entre ces paradigmes et introduction aux principaux langages de programmation.
- 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).
|
| Prérequis |
Maîtrise de la programmation dans un langage de haut niveau, donnée par exemple par les cours SINF1121 ou FSAB1402.
|
| Méthodes d'enseignement |
- Séances magistrales chaque semaine.
- Séances de travaux pratiques en salle informatique chaque semaine.
- Projet de conception et programmation à faire pendant la deuxième moitié du cours.
|
| Bibliographie |
- Van Roy P. et Haridi S, "Concepts, Techniques, and Models of Computer Programming", MIT Press, March 2004. (support obligatoire)
- Mozart Programming System version 1.4.0, www.mozart-oz.org.
|
| Méthodes d'évaluation |
- Test au milieu du quadrimestre (dispensatoire pour 1/4 de la matière).
- Projet (1/4 de la note).
- Examen écrit en session (3/4 de la note).
|
Cycle et année d'étude: |
> Troisième année de bachelier en sciences informatiques
> Année d'études préparatoire au master en sciences informatiques
> Master [60] en sciences informatiques
> Première année de master [120] en sciences informatiques à finalité spécialisée
> Première année de master [120] : ingénieur civil en informatique, à finalité spécialisée
|
Faculté ou entité en charge: |
> INFO
|
<<< Page précédente
|