• Niveau d'étude

    BAC +4

  • ECTS

    3 crédits

  • Composante

    Sciences économiques, gestion, mathématiques et informatique

  • Volume horaire

    24h

  • Période de l'année

    Enseignement septième semestre

Objectifs

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 ou C POSIX et 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.

Approche pédagogique et plan de cours.

  • Introduction à la programmation concurrente et multi-tâ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 de la notion de processus lourd et léger.
  • Introduction aux primitives de synchronisation des processus légers en Java (notion de code en exclusion mutuelle, rendez-vous, coroutine, code asynchrone).
  • Introduction aux outils de gestions de processus légers (gestion de la mémoire, traitements répétitifs / looper, groupe de processus légers / thread pool).
  • Coroutines
Lire plus

Évaluation

Session 1 : Évaluation continue  (cf. règle par défaut de la section « Modalités spécifiques » des M3C spécifiques)

Session 2 : Règle par défaut décrite dans la section « Modalités de contrôle et examens / Modalités spécifiques »

Lire plus

Heures d'enseignement

  • Programmation ConcurrenteCM12h
  • Programmation ConcurrenteTD12h

Pré-requis obligatoires

  • De bonnes connaissances en Java
  • Des connaissances en Kotlin via le module de programmation fonctionnelle
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 sous Android 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
Lire plus