Concepts des langages de programmation

lsinc1104  2026-2027  Charleroi

Concepts des langages de programmation
5.00 crédits
30.0 h + 30.0 h
Q1

  Cette unité d’enseignement n’est pas accessible aux étudiants d’échange !

Enseignants
Langue
d'enseignement
Français
Préalables
Ce cours suppose acquises des compétences de base en programmation visées par les cours LSINC1101/LINFO1101 et les notions sur l'algorithmique et les structures de données simples visées par le cours LSINC1402/LEPL1402.

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
  • Paradigmes de programmation (y compris fonctionnel, orienté objet, dataflow et multi-agent)
  • Sémantique formelle et techniques de raisonnement
  • Abstraction procédurale (programmation d'ordre supérieur)
  • Abstraction de données (y compris orienté objet et types de données abstraits)
  • Programmation concurrente (y compris état partagé, passage de messages et dataflow déterministe)
  • Programmation symbolique (y compris conception algorithmique)
Acquis
d'apprentissage

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

Eu égard au référentiel AA du programme « Bachelier en Sciences de l'Ingénieur, orientation ingénieur civil », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
  • AA 1.1, 1.2
  • AA 2.3, 2.4, 2.5, 2.6, 2.7
  • AA 4.2, 4.3, 4.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.I2, S1.I3, S1.I5
  • S2.2, S2.3, S2.4
  • S5.5
Les étudiants ayant suivi avec fruit ce cours seront capables de
  • spécifier les problèmes, les diviser dans leurs étapes de base, et concevoir des algorithmes et des abstractions pour les résoudre ;
  • choisir le bon paradigme de programmation et écrire un programme dans ce paradigme pour résoudre un problème ;
  • utiliser la sémantique formelle pour expliquer l'exactitude du programme ;
  • écrire de petits programmes concurrents dans le paradigme du dataflow déterministe;
  • 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).
 
Contenu
Le but de ce cours est d'élargir et approfondir les connaissances en programmation acquises dans les précédents cours.  Ce cours aborde les sujets suivants:
  • Le cours donne un cadre uniforme pour tous les concepts de programmation, organisés en paradigmes de programmation.
  • Le cours donne une sémantique formelle et des techniques de raisonnement pour tous les paradigmes présentés.
  • Le cours donne une introduction au lambda calcul comme base de la programmation fonctionnelle et la programmation d'ordre supérieur.
  • La programmation d'ordre supérieur est utilisée comme principe organisateur pour construire des abstractions procédurales.
  • La programmation concurrente est présentée en deux formes, le dataflow déterministe et la concurrence à passage de messages.
  • L'abstraction de données est présentée dans sa forme générale et avec ses deux formes principales, la programmation orientée-objet et les types de données abstraits.
  • La programmation symbolique et la conception d'algorithmes sont utilisés partout dans le cours.
  • Cinq paradigmes de programmation importants sont abordés dans ce cours: la programmation fonctionnelle, la programmation orientée objet, la programmation dataflow déterministe, les acteurs dataflow et la programmation avec objets actifs (multi-agent).
Des exemples d'applications pratiques sont présentés pour tous les concepts et tous les paradigmes.
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
  • 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
L'évaluation se compose des éléments suivants, chacun nommé par une variable (M1, P, F, M2, B) :
  • M1, Examen "midterm": pour 5 points, vers la 7ème semaine. Épreuve écrite.
  • P, Projet: pour 5 points, dans la seconde moitié du quadrimestre. Épreuve de type "travail". Le projet est obligatoire et est fait pendant le quadrimestre du cours. Le projet n'est évalué qu'une fois par année académique. Il ne peut pas être réalisé en seconde session. Une défense orale peut être requise pour compléter le projet.
  • F, Examen final: pour 10 points. Épreuve écrite. À la fin de la session. 
  • M2, Reprise de l'examen midterm: pour 5 points, en même temps que l'examen final. Seulement la meilleure note entre l'examen de midterm (M1) et sa reprise (M2) sera conservée. Les deux examens seront néanmoins toujours corrigés.
  • B, Bonus des travaux pratiques: pour 1 point, tout au long du semestre. Évaluation continue. Basé sur le nombre de sessions de travaux pratiques à laquelle la personne étudiante est présente.
La note finale est calculée selon la formule suivante: min(20, max(M1,M2)+P+F+B), où M1, M2, P, F, et B sont les variables définies ci-dessus. La note ne peut donc pas dépasser 20/20. La pondération finale est donc la suivante: M1 et M2 = 25%, P = 25%, F = 50%, B = 5%, pour un total limité à 100%.

En cas de deuxième inscription à l'évaluation (seconde session), seulement les notes M2 et F sont réévaluées. Les autres notes (M1, P, B) sont gardées telles quelles.

L'enseignant se réserve le droit de demander une défense orale à certaines personnes étudiantes pour valider un élément d'évaluation.
Autres infos
Prérequis:
  • Cours de programmation de seconde année Informatique 2 (LEPL1402) ou équivalent.
Un des objectifs du cours est de permettre aux personnes étudiantes de développer des compétences et connaissances utiles pour leur carrière future. Utiliser des outils d'IA générative empêche la bonne acquisition de ces compétences et connaissances. L'utilisation d'outils d'IA générative est donc:
  • interdite durant les examens
  • interdite pour écrire du code pour le projet ou pour tout autre activité lié à l'écriture de code
  • seulement autorisée pour l'amélioration de l'écriture (orthographe, grammaire, reformulations mineures) du rapport de projet, sous les conditions que i) la personne étudiante assume l'entière responsabilité du rapport remis pour l'évaluation, et ii) que l'utilisation de l'IA générative soit précisément documenté dans une déclaration sur l'utilisation de l'IA générative qui inclut quels outil d'IA générative ont été utilisés, pour quelle partie, et avec quelles instructions génératives (prompts).
  • fortement déconseillée durant les séances de travaux pratiques
Tous les projets doivent inclure une déclaration sur l'IA générative, y compris les projets pour lesquels aucun outil d'IA générative n'a été utilisé (auquel cas, la déclaration stipule simplement qu'aucun outil d'IA générative n'a été utilisé). Tout projet qui ne contient pas de déclaration sur l'IA générative obtiendra une pénalité.
Ressources
en ligne
LSINC1104 Moodle.
Faculté ou entité
en charge


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

Intitulé du programme
Sigle
Crédits
Prérequis
Acquis
d'apprentissage
Bachelier en sciences informatiques