Computer language concepts

lingi1131  2017-2018  Louvain-la-Neuve

Computer language concepts
5 crédits
30.0 h + 30.0 h
Q2
Enseignants
Van Roy Peter;
Langue
d'enseignement
Anglais
Préalables
Au sein du programmeSINF1BA : LFSAB1402
Au sein du programme FSA1BA: LFSAB1101, LFSAB1102, LFSAB1201, LFSAB1202, LFSAB1301, LFSAB1401

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
  • 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
Acquis
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 ingénieur civil », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :

  • AA1.1, AA1.2
  • AA2.4-7
  • AA4.1, AA4.3-4

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 :

  • S1.I5
  • S2.2-4
  • S5.2, S5.4-5

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).
 

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
  • 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).
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.
Modes d'évaluation
des acquis des étudiants
  • 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).
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éalables:
  • FSAB1402 : Maîtrise de la programmation dans un langage de haut niveau
Bibliographie
  • Van Roy P. et Haridi S, "Concepts, Techniques, and Models of Computer Programming", MIT Press, March 2004. (support obligatoire)
  • Mozart Programming System version 2, www.mozart-oz.org.
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
Bachelier en sciences informatiques

Mineure en sciences de l'ingénieur : informatique

Mineure en sciences informatiques