> Formations > Programmes des études

STM-GE-15-Systèmes temps réel (S-IoT)

ue-gec-stm-ge-15

Responsable(s) du contenu pédagogique


Total crédits : 3
Total heures : 30 (12 cours, 18 projet)
Total heures travail personnel : 31


Prérequis

- Connaissance en programmation orientée objet
- Connaissance en programmation Objet Java


Objectif

Module d'initiation à la programmation concurrente.


Programme

La première et principale partie du cours est dédiée à la programmation concurrente ou multi-taches.
Les concepts seront mis en application en Java : Java dispose d'un mécanisme natif de creation/synchronisation de processus légers (threads) qui s'exécutent en parallèle au dans un même programme (au sein de la machine virtuelle java JVM), ce qui permet de tester facilement les mécanismes de base (sleep, interrupt, wait/notify). Ensuite, des bibliothèques de plus haut niveau ont été développées pour mettre en œuvre facilement et efficacement les cas d'utilisation les plus courants : opérations atomiques, collections spécifiquement adaptées à une utlisation en multi-tâche.

La deuxième partie du cours est une introduction à la programmation distribuée : Les étudiants apprendront à créer des applications réseau échangeant des données au travers de sockets TCP/IP, et en utilisant en particulier une architecture client-serveur.


Compétences attendues

exécution des consignes – résoudre des problèmes avec de la programmation concurrentes java:
- Développement de programmes en multi-tache Java
- Evaluation/comparaison de la performance des programmes (multi-threading Vs. sequential)
- Développement d'application client/serveur en multi-taches


Contraintes pédagogiques - Méthodes pédagogiques

Les concepts seront introduits dans une première partie de cours, largement illustrée par des exemples.
Les étudiants devront ensuite mettre en pratique ces connaissance au travers d'un projet qui nécessitera des calculs parallèles et/ou distribués.

Analyse du problème (lien problème/algorithme). Acquisition des bases de l'algorithmique. Analyse descendante, Décomposition d'un programme en sous-programmes.

Informatique générale en Java:
-Rappel sur la programmation orientée objet en Java (Exercices et développement des classes entiers, réels, monômes, polynômes,...)
Programmation concurrente multi-taches en Java
- Exercice d'application (algorithme de tri,..).
- Accès concurrentiel à des variables partagées (Exercice sommes, cumul,...)
- Méthodes synchronisées.
- evaluation des performances des programmes multi-tâches (Exercice de comparaison avec les programmes séquentiels)

Programmation Client/Serveur en Java.
-Programmation avec les sockets en Java (Développement d'une application de messagerie instantanée réseau)


Mode d'évaluation

Examen final sous forme de projet (6-8 semaines) avec une soutenance: coeff 1

Les étudiants sont évalués à la suite d'une soutenance sur plusieurs critères:
-La résolution du problème du projet avec les connaissances acquises en cours.
-La qualité du rapport et présentation le jour de la soutenance


Bibliographie

Scott Oaks, Henry Wong, "Java Threads, 3rd Edition", September 2004, O'Reilly. ISBN: 9780596007829
Brian Goetz et al. "Java Concurrency in Practice",
biblio Web
https://docs.oracle.com/javase/tutorial/essential/concurrency/
http://deptinfo.unice.fr/~grin/messupports/java/Thread1.pdf



Retour