• Niveau d'étude

    BAC +3

  • ECTS

    3 crédits

  • Composante

    Sciences économiques, gestion, mathématiques et informatique

  • Volume horaire

    32h

  • Période de l'année

    Enseignement cinquième semestre

Description

Ce cours présente les aspects systèmes liés à la  programmation multitâche et les paradigmes de la  concurrence dont la maîtrise est devenue indispensable pour les applications modernes. La mise en pratique est faite en Java/Kotlin (comme par ex sous Android). Le premier objectif de ce cours est donc la compréhension des paradigmes de la concurrence entre différentes activités (processus ou thread). Le deuxième objectif est la maîtrise des modèles de programmation concurrente avec mise en application sur des cas concrets.

Lire plus

Objectifs

Introduction à la programmation concurrente et multitâches : étude des problèmes liés à ces techniques de programmation et la compréhension des problèmes liés au partage de ressources et de données lorsque plusieurs traitements ont lieu sur une même source de données.

  • Introduction aux différents outils de parallélisation de code.
  • Introduction aux problèmes de dépendances de traitements et de notion d’accélération.
  • Introduction de la notion de processus léger.
  • Introduction outils java pour l’exécution de multiples tâches de code au sein d’un même processus. Notions de flot d’exécution (“Thread”) et tâche (“Runnable”, “Callable”).
  • Introduction aux primitives de synchronisation des processus légers en Java (notion de code en exclusion mutuelle, rendez-vous, d’exécution de code asynchrone avec la notion de “Future”).
  • Introduction aux outils de gestion de processus légers (gestion de la mémoire, traitements répétitifs via des “looper”,  groupe de processus légers via les “thread pool”).
Lire plus

Évaluation

Modalités : Mixte : CC + CT
SESSION 1 :
Contrôle Continu
• Type : Écrit, Machine
• Durée : --
• Précisions : Le contrôle continu représente les 50 % de la note finale,
le contrôle continu pouvant prendre la forme d’un examen (écrit ou sur machine) ou d’un TD noté au choix du responsable du cours.

Contrôle Terminal
• Type : Écrit
• Durée : --
• Précisions : L’examen final représente 50 % de la note finale.

Régime Dérogatoire
• Type : Écrit
• Durée : --
• Précisions : L’examen final représente 100 % de la note finale.

SESSION 2 :
• Type : Écrit
• Durée : --
• Précisions : L’examen final représente 100 % de la note finale.

Utilisation de l'intelligence artificielle :
L’utilisation de l’Intelligence Artificielle est interdite lors des évaluations.

Lire plus

Heures d'enseignement

  • CMCM16h
  • TDTD16h

Pré-requis obligatoires

Connaissances en Java et en programmation Objet.

Lire plus

Compétences visées

  • Connaissance des paradigmes de la programmation concurrente et multitâche.
  • Maîtrise des modèles pratiques de programmation concurrente.
  • Réalisation d’applications en utilisant ces concepts.
Lire plus

Bibliographie

  • Java Concurrency in Practice, Brian Goetz et al, 2006, Addison Wesley, ISBN 978-0321349606
  • Hands-on Design Patterns with Kotlin: Build scalable applications using traditional, reactive, and concurrent design patterns in Kotlin, Alexey Soshin, 2018, ISBN 978-1788998017
  • Mastering Concurrency Programming with Java 8, Javier Fernandez Gonzalez, 2016, ISBN 978-1785886126
  • (théorie) The art of Multiprocessor Programming, Maurice Herlihy & Nir Shavit, 2006, ISBN 978-0-12-397337-5
  • (théorie) Concurrent Programming : Algorithms, Principles, and Foundations, Michel Raynal, 2013, ISBN 978-3-642-32026-2
Lire plus