Archives de catégorie : module: informatique

Module: React Native

React Native
proposé par : Jean-Claude Dufourd, 9691, bureau 5D30, dufourd@telecom-paris.fr
Descriptif
L’utilisation de smartphones ou de tablettes est devenue depuis quelques années presque incontournable. React Native est une des technologies qui permettent de développer une application qui fonctionne aussi bien sur iOS que sur Android.
Ressources
Le module React Native sur OpenClassRooms n’est pas à jour pour la partie navigation, mais OK pour la premiere moitié. Documentation et guides sur http://reactnative.dev et http://reactnavigation.org
Exemples d’utilisation du module
Création d’une application mobile qui fonctionne sur iOS et Android et qui remplit les besoins du projet.
Objectifs Pédagogiques
Informatique : prendre en main l’environnement de développement React Native, comprendre le fonctionnement d’une application, savoir lire et utiliser la documentation des API, savoir créer une application de base et utiliser certaines fonctionnalités avancées (affichage graphique, réseau, multimédia …), savoir debugger une application
Résultats attendus (A affiner selon vos besoins)

PAN2 : Réaliser une application React Native implémentant le squelette de l’application finale (toutes les pages, avec les fonctions pas nécessairement connectées).

PAN3 : Réaliser une application spécifique (à définir en fonction des besoins du projet). Cette application fonctionnera sur un smartphone ou une tablette et pourra mettre en oeuvre: la communication via le réseau, par exemple selon le protocole HTTP, un affichage graphique simple avec quelques éléments interactifs, la lecture ou la capture de données multimédia (son, image, vidéo)

PAN4 : Analyser comment le module est intégré dans le prototype, quelles pistes d’améliorations seraient à envisager (performance, simplicité)

 

Module: Communication Client Serveur

Contact pour le module :

Jean-Claude Dufourd (at telecom-paris.fr), 5D30
Jean-Claude Moissinac, 5D34

Description du module :

Dans tous les cas où plusieurs entités informatiques discutent entre elles au sein d’un projet, une communication « client-serveur » est mise en oeuvre (même quand les deux entités sont des pairs).

Ce module permet d’explorer les aspects simples de la communication entre deux programmes et/ou entre deux machines par le réseau, avec pas mal d’options:

  • communication entre deux programmes Java tournant sur la même machine
  • les options ci-dessus entre deux PC différents, ou entre un appareil Androïd et un PC, ou entre deux appareils Androïd
  • les options ci-dessus avec plus de 2 entités communicantes
  • les options ci-dessus utilisant Internet/Wifi ou bluetooth
  • une communication simple commande/réponse en texte
  • une communication plus complexe incluant aussi des transferts de ressources
  • une communication à débit plus élevé nécessitant l’utilisation d’un format binaire…

Objectifs du module :

  • Savoir communiquer entre deux programmes tournant sur la même machine ou sur des machines différentes par le réseau.
  • Définir le bon niveau de communication et les éléments du dialogue entre les deux (ou plus) entités.

Livrables envisageables :

En fonction de la complexité du module à réaliser tout ou partie des points suivants pourrait être considéré comme des étapes réaliste de la mise au point de votre application concurrente ou répartie :

  • PAN1 :
    • Ecrire la description de toutes les commandes et de toutes les réponses possibles entre le client et le serveur.
  • PAN2 :
    • Livrable: identification des interface utilisées et des bibliothèques offrant le motif socket + socket server; premier squelette de code réalisant la connexion entre nœuds du réseau.
  • PAN3 :
    • Livrable : code Java / Android réalisant une communication de messages entre les deux nœuds (initialisation de l’interface, formatage et décodage de messages simples).

Ressources :

Module: Intégration et Tests

Expert : votre encadrant GL

coordinateur: Jean-Claude Dufourd, email : dufourd_at_telecom-paris.fr

Objectif du module : Mettre le résultat de tous les autres modules ensemble et faire marcher le tout.

  • Vérifier que chaque module implémente l’interface prévue (par compilation)
  • Vérifier que chaque module a été testé (présence de tests dans le module)
  • Créer les tests globaux, équivalents des méthodes de tests des modules au niveau du projet entier
    • tests de fonctionnalité : ça fait ce qu’il faut
    • tests de performance : ça va assez vite
    • tests d’utilisabilité : c’est compréhensible par un utilisateur extérieur
  • Appliquer un par un les cas de tests globaux prévus dans le plan de test:
    • Faire des retours aux créateurs des modules sur les problèmes.
    • Trouver des solutions pour les problèmes non spécifiques à un module.

Supports de cours :

Attentes pour les différents PAN:

PAN 1 :

Une partie de ce qui suit est de la responsabilité de tout le groupe, mais il est bon de le rappeler ici:

  • Description textuelle et schéma décrivant l’architecture du système
    • formalisme libre mais cohérent et légendé
  • Diagramme d’activité et/ou de séquence (temporel)
    • Faisant apparaître les acteurs et actions
    • Et les transitions avec leur(s) condition(s)
  • Description des interfaces entre modules (texte)
  • Dépot Git unique
    • Avec la bonne structure de dossier
    • Avec un commit par personne dans readme.txt

PAN 2 :

  •  Plan de test global
    • Liste des tests de fonctionalité, de performance, d’utilisabilité, d’acceptabilité… (tous les types de test be sont pas forcément pertinents pour votre projet)
    • Pour chaque test
      • contexte de test
      • liste des entrées à fournir
      • liste des sorties attendus, avec la méthode de validation (est-ce qu’on attend exactement ce résultat au bit près, ou dans une certaine marge d’erreur, ou un résultat de cette forme…)
  • Squelettes de toutes les méthodes principales
    • sous forme simulée
      • Fantôme : méthode vide utilisant System.out.println pour indiquer qu’elle est appelée.
      • Bouchon : méthode renvoyant toujours le même résultat.
      • Substitut : implémentation de la méthode très simplifiée.

PAN 3 :

  • rapport sur l’état de l’intégration des modules (quel module, quelle version, quels problèmes) dans le proto allégé
  • résultat des tests (passés, échoués, résultats quantitatifs/qualitatifs sur les performances, l’acceptabilité …) du proto allégé
  • Note: le rapport et les résultats se feront en utilisant les modules tels qu’implémentés, testés et livrés par les responsables des autres modules à une date à déterminer entre les responsables de modules. Il est acceptable qu’un livrable du module « test et intégration » ne contienne pas la dernière version d’un module (si ce dernier est en retard). Les retards seront cependant à justifier et feront l’objet d’une appréciation par le jury dans la notation de ces modules.
  • Note: l’encadrant va vérifier sur le dépôt Git que le code est documenté, lisible, maintenable, que tous les élèves ont contribué…

PAN 4 :

  • comme le PAN3 pour le prototype final…

 

Module: Web sémantique et données liées

Le Web sémantique et les données liées
proposé par :

  • Jean-Claude Moissinac, bureau 5D34, jean-claude.moissinac@telecom-paris.fr
Descriptif
Internet donne accès à de grandes quantités de données; cette caractéristique s’amplifie avec l’ouverture des données publiques et le mouvement de l’Open Data. Afin d’affiner la façon d’accéder à ces données par des machines pour composer de nouveaux services, de nouvelles approches se sont développées connues sous la dénomination générique de Web Sémantique.Ce module vise à faire acquérir les bases de compréhension et des outils nécessaires pour exploiter des possibilités du web sémantique et de l’Open Data.
Ressources
Littérature d’initiationComme point d’entrée en services web, il peut être intéressant de regarder les sites suivantshttp://www.bnf.fr/documents/no-DevOnto.pdfdata.gouv.fr

http://dbpedia.org/About et l’exemple http://dbpedia.org/page/France

http://triplify.org/Overview

http://dbpedia.org/About

http://schema.org/

Quelques Sujets concernant le web sémantique

  • RDF, RDFa (RDF dans des pages Web)
  • Ontologie
  • SPARQL

Exemples de domaines applicatifs

  • Transport
  • Médecine, chimie
  • Education, culture
Objectifs Pédagogiques
  • Graphes de connaissances : comprendre la représentation de connaissances dans des graphes, représentés à partir de triplets (sujet, prédicat, objet)
  • Compréhension des principes de l’exploitation de graphes de connaissances: de RDFa aux raisonneurs dans les ontologies; les bases de l’utilisation de ce type d’approche dans le projet devront être clairement posées
  • Interrogation d’un graphe de connaissances: des librairies RDFa au langage SPARQL
  • Application: savoir expliquer comment les connaissances acquises sont mise en place dans le code
Résultats attendus (A affiner selon vos besoins)
  • PAN1 :
    • Décrire les connaissances à représenter et/ou exploiter pour le prototype
    • Expliquer comment ces connaissances sont exploitées.
  • PAN2 :
    • Expliquer précisément d’un point de vue technique les principes d’exploitation des connaissances utilisées
    • Livrable: implémentation d’un service créant ou consommant des connaissances
  • PAN3 :
    • Expliquer les problèmes réels ou potentiels des services retenus pour le prototype
    • Décrire le fonctionnement et l’intégration des connaissances dans le prototype allégé; présenter les processus informatiques mis en oeuvre
    • Livrable : à préciser d’ici au PAN2
  • PAN4 :
    • Analyser comment le module est intégré dans le prototype, quelles pistes d’améliorations seraient à envisager (performance, simplicité,)
    • livrable biblio : les principes de fonctionnement, l’intérêt et les limites de l’exploitation du Web Sémantique dans votre projet

Module : Programmation concurrente

Contact pour le module :

Florian Brandner (@ telecom-paris.fr)

Description du module :

La plupart des applications que vous utilisez tous les jours réalisent en parallèle plusieurs activités. Par exemple, votre client mail ou navigateur web préféré va collecter et mettre à jour différentes informations vérifier l’état des mises à jour, gérer les téléchargements de fichiers. Cette tendance va en augmentant si l’on considère le cas d’application reposant sur des programmes s’exécutant sur différent ordinateurs ou dispositifs portables (e.g. téléphones portables, tablettes).

Lors de la conception d’une application, l’identification des activités menées par le logiciel est une étape cruciale de sa conception. C’est durant cette phase que l’on décide de découpler certains traitements et de la manière dont les applications vont communiquer avec d’autres applications.

La plupart des modèles de programmation introduisent une notion de tâche ou thread. Ce concept permet de définir une activité séquentielle et donne donc les moyens de décrire plusieurs activités concurrentes interagissant les unes avec les autres.  Un thread va appeler des méthodes dans des bibliothèques ou interagir avec d’autres thread. On distinguera les interactions ayant pour but la communication ou le partage d’information, des interactions ayant pour but de synchroniser les activités. Cette présentation est une version simplifiée et très partielle de ce qui peut être vu en inf223.

En fonction du type d’interaction entre un thread et son environnement, il sera possible d’étudier la notion de protocole de communication (soit en temps qu’utilisateur ou concepteur).

Objectifs du module :

  • Savoir définir et utiliser dans la description de vos objectifs les termes : threads,  variables partagées, messages, protocoles et interfaces de communication.
  • Être capable d’utiliser les bibliothèques Java / Android pour implémenter les threads et les communications / interactions entre threads.

Livrables envisageables :

En fonction de la complexité du module à réaliser tout ou partie des points suivants pourrait être considéré comme des étapes réalistes de la mise au point de votre application concurrente ou répartie :

  • PAN1 :
    • Connaître les définitions de haut niveau des termes : threads, variables partagées, messages, protocoles et interfaces de communication.
    • Utiliser le vocabulaire appris pour justifier l’intérêt du module en expliquant l’usage que vous pensez pouvoir en faire.
  • PAN2 :
    • Livrable: Etude bibliographique sur la notation de diagramme de séquence.
    • Livrable: Définition des threads et objets partagés sous forme de classes + diagramme de séquence identifiant les threads et leur enchaînement / leurs collaborations possibles.
  • PAN3 :
    • Livrable: code Java / Android permettant l’exécution des activités principales.
  • ·    PAN4 :
    • Livrable : Code intégrant l’ensembles des différentes activités avec couverture de l’ensemble des scénarios décrit dans le diagramme de séquence du PAN1.
    • Livrable: Description complète du protocole applicatif et code Java / Android assurant l’initialisation des communications, leur gestion, l’envoi et la réception de messages.

Module : Interface Utilisateur Graphique

Note importante:

Si vous avez un module Programmation Android, l’interface utilisateur est gérée avec votre expert Android. Si vous programmez sur PC/Mac/Linux, alors ce module-ci est pour vous.

Expert contact : votre encadrant GL

coordinateur: Jean-Claude Dufourd, email : jean-claude.dufourd_at_telecom-paris.fr

Supports de cours :

Planches du cours sur Swing :

Descriptif

Une application logicielle doit fournir un moyen à l’utilisateur de présenter les actions/fonctionnalités de l’application avec lesquelles il souhaite interagir. En réponse, l’application fournit un rendu graphique correspondant au service lui-même ou permettant à l’utilisateur de contrôler son exécution (affichage d’une vidéo, affichage d’un menu, d’un texte, création d’une fenêtre, une barre de progression, etc.). Le module ne concerne ni du traitement de l’image ni de la 2D/3D.

La conception et la mise en œuvre d’une interface doit respecter certaines règles si l’on veut éviter les défauts classiques : mauvaise réactivité, ergonomie dégradée par les choix d’implémentations, etc.

Nous verrons dans ce module les principes qui vous permettront de décrire l’interface que vous souhaitez réaliser. Puis, nous verrons des éléments concrets d’implémentation sous Java Swing ou Android vous permettant de réaliser cette interface.

Types de savoir faire concernés

  • Savoir définir et utiliser dans la description de votre module les termes : interface graphique, rendu graphique, composants d’interface graphique, chaîne réactive, évènements.
  • Savoir définir une disposition pour vos objets graphiques qui vous permette de contrôler efficacement le rendu graphique. Savoir utiliser les chaînes réactives existantes (event Swing, Android), ou créer ses propres évènements pour capturer des stimuli spéciaux et les intégrer dans votre chaîne réactive.
  • Savoir Implémenter les concepts vus lors du module et les adapter à votre projet.

Livrables Types

Presque tous les projets dans le cadre de PACT repose sur des interfaces graphiques. Cela ne veut pas dire qu’un module doit être nécessairement créer pour ce travail. Seuls les interfaces un peu complexes nécessiteront la mise en place d’un module.

Attentes pour les différents PAN:

PAN 1 :

  • Comprendre la terminologie du domaine : interface graphique, rendu graphique, composants d’interface graphique, évènements, chaîne réactive (ou évènementielle).
  • Rédiger une description textuelle et graphique (dessin ou schéma, même dessins à la main scannés ou photographiés) de l’interface graphique souhaitée dans votre projet. Cette description devra séparer au maximum la partie représentation graphique, de la partie chaîne réactive (évènement et réactions à ces évènements).

PAN 2 :

  • Implémentation de l’interface graphique, pas encore connectée avec les éléments de la chaîne réactive.

PAN 3 :

  • Interface graphique complête

Module : Services Web

Les services Web
proposé par :

  • Jean-Claude Moissinac, jean-claude.moissinac_at_telecom-paris.fr
Descriptif
Les dernières années ont connu un essor fulgurant de l’utilisation d’Internet comme plateforme applicative: Internet n’est plus seulement un vecteur de documents, mais un vecteur de services. Une illustration marquante en est donnée par Google Maps qui a fourni a de nombreuses applications la capacité d’intégrer facilement l’utilisation de cartes du monde.Cet essor est porté par des méthodes standards permettant de proposer et de consommer des services via le web, de trouver des services et de les composer pour bâtir des applications ou proposer de nouveaux services.Ce module aborde les principes de fonctionnement et d’utilisation des web services -applicables dans divers langages de programmation- et la mise en application sera plus particulièrement étudiée en Java.Ce module vise à vous permettre de découvrir et pratiquer ces méthodes, d’être en mesure de consommer et de proposer des services.
Ressources
Littérature d’initiationComme point d’entrée en services web, il peut être intéressant de regarder:http://opikanoba.org/tr/fielding/rest/, le document à la base des services REST

Quelques Sujets concernant les web services

  • Services REST
  • Services SOAP

Exemples de domaines applicatifs

  • Cartographie et services géographiques
  • Traduction
  • Web social
Objectifs Pédagogiques
  • Services distribués : savoir expliquer et manipuler le calcul vectoriel, les transformations d’espace, les modèles de couleurs et d’éclairage, les images et textures
  • Compréhension des principes des services REST : savoir expliquer les 4 fonctions d’un service REST, comprendre ce qu’implique la réalisation et la consommation d’un service REST
  • Compréhension des principes des services SOAP : savoir expliquer les éléments qui structurent et décrivent un service SOAP
  • Application: savoir expliquer comment les connaissances acquises sont mise en place dans le code
Résultats attendus (A affiner selon vos besoins)
  • PAN1 :
    • Décrire les services nécessaires au prototype
    • Expliquer comment ces services sont exploités.
  • PAN2 :
    • Expliquer les principes de communication retenus pour le ou les services créés ou consommés
    • Livrable: implémentation d’un service et d’un consommateur de service
  • PAN3 :
    • Expliquer les problèmes réels ou potentiels des services retenus pour le prototype
    • Décrire le fonctionnement et l’intégration du module dans le prototype allégé
    • Livrable :
  • PAN4 :
    • Analyser comment le module est intégré dans le prototype, quelles pistes d’améliorations seraient à envisager (performance, simplicité,)
    • livrable biblio : les principes de fonctionnement, l’intérêt et les limites des services Web

Nous proposons deux possibilités :

  1. L’utilisation d’un serveur d’applications du type GlassFish avec son environnement de développement NetBeans. Dans ce type d’approche, les pages et les services sont programmés sous la forme d’Entreprise Java Beans. Utiliser un serveur d’application est conseillé pour les entreprises mais peut être utilisé par les projet PACT.
  2. L’utilisation du toolkit SAW (Stand Alone Web server) permet de développer facilement des services Web. Il est possible de développer une application Web avec SAW. Le site montré en exemple ici a été totalement programmé avec SAW. Mais il est également possible de développer un site en WordPress qui intègre des services mis en oeuvre avec SAW.
  3. Pour des raisons de sécurité, il est un peu complexe de mettre en ligne des services Java à l’école. Une solution peut être l’utilisation de Google App Engine, une plateforme de Google qui permet d’héberger des services en ligne, notamment en Java (voir https://developers.google.com/appengine/docs/java/gettingstarted/?hl=fr).

Module : Intelligence Artificielle

Contacts experts : 

Jean-Louis Dessalles (jean-louis.dessalles AT telecom-paristech.fr)

Introduction :

Donner une définition de l’intelligence artificielle (IA) est difficile, voici quelques éléments de définition : l’IA désigne la simulation des mécanismes de la pensée par un ordinateur, la faculté de reproduire un raisonnement par des moyens informatiques et par extension un ensemble de réalisations et de recherches qui essaient d’imiter artificiellement les performances humaines.

La bio-inspiration est est une branche des sciences de l’ingénieur qui consiste à s’inspirer de la nature pour développer de nouveaux systèmes artificiels. Les sources d’inspiration sont très variées, animaux, végétaux, champignons, virus… et les applications de l’ingénierie bio-inspirée se retrouve dans un grand nombre de domaines (aéronautique, informatique, robotique, intelligence artificielle, etc.)

Le kit IA/bio-inspiration est principalement un kit “algorithmique”. Il s’agit de vous présenter diverses méthodes utiles pour :
– la résolution de problèmes d’optimisation (chemin le plus court, meilleure solution, etc.)
– la modélisation et l’étude de l’évolution de sociétés d’agents
– la résolution de problèmes complexes (classification, reconnaissance, etc.)

Optimisation :

Il s’agit de présenter les principes généraux de deux algorithmes classiques utilisés dans des cadres d’optimisation :

  •  algorithmes génétiques : algorithme de recherche de solution approchée (ou exacte) d’un problème d’optimisation
  • algorithmes de colonies de fourmis : algorithme de recherche de plus court chemin dans un problème d’optimisation (graphe, recherche de chemin dans l’espace, etc.)

Voici quelques exemples d’application : [algos génétiques :  résolution du problème (classique) du voyageur de commerced’étranges créatures qui apprennent à marchertrouver son chemin dans un labyrinthe] ,  [colonies de fourmis : chemin optimal dans un labyrintheoptimisation de processus industriel]

Apprentissage et reconnaissance :

  • réseaux de neurones (principes, exemples, applications)
Voici quelques exemples d’application : détection du cancer du seinreconnaissance de caractères
Les systèmes multi-agents (SMA)

Un système multi-agent (SMA) est un système composé d’un ensemble d’agents, situés dans environnement et interagissant selon certaines relations. Un agent est, au moins partiellement, autonome. Ce peut être un processus, un robot, un être humain, etc.

  • principe et application des SMA

Voici quelques exemples d’application : quelques exemples ici,  comment se forge une réputation ?modélisation d’une culture d’entreprise, etc. 

En conclusion :

Le kit IA est principalement un kit destiné à présenter des méthodes et est facile à coupler avec d’autres modules (par exemple le module robotique, ou encore le module Sciences humaines et sociales). N’hésitez pas à poser des questions, à venir chercher des renseignements sur la portée applicative des méthodes décrites ci-dessus.

[[[

Nota Bene :

En supplément, je peux également vous fournir quelques bases en modélisation cognitive  

Modélisation de l’intérêt, modélisation de la pertinence dans les narrations : voir www.simplicitytheory.org ). Pour faire court, les situations narratives intéressantes sont plus simples à décrire qu’à produire (ici, simplicité = taille du meilleur résumé). Pour plus de renseignements sur ce modèle et ses applications, vous pouvez me contacter. 

]]]

 

Module : Mise en oeuvre d’une interface Web par PHP, node.js ou python/flask

Module: Mise en oeuvre d’une interface Web par PHP ou node.js ou python/flask
proposé par :

  • Jean-Claude Dufourd (dufourd_at_telecom-paris.fr, 9691, dufourd_at_telecom-paris.fr)
Descriptif
Le JavaServer Pages ou JSP est une technique basée sur Java qui permet aux développeurs de créer dynamiquement du code HTML, XML ou tout autre type de page web. Cette technique permet au code Java et à certaines actions prédéfinies d’être ajoutés dans un contenu statique.
La syntaxe du JSP ajoute des balises XML, appelées actions JSP, qui peuvent être utilisées pour appeler des fonctions.
Les JSP sont compilées par un compilateur JSP pour devenir des servlets Java. Pour ceux qui connaissent PHP, on peut dire que les Java Server Pages (JSP), c’est PHP en Java.
Le module consiste à concevoir et à mettre en oeuvre une interface web avec des JSP, utilisant un serveur open source comme Tomcat.Ou alors à faire du PHP, mais seulement si vous savez déjà l’utiliser.
Ressources dont le module dépend
Exemples d’utilisation du module
  • faire une interface web évolutive en fonction des données
Résultats attendus
  • livrable 1: installer Tomcat sur une machine du groupe, et créer deux JSPs dont l’une affiche la date et l’heure, la seconde cherche trois images (differentes à chaque exécution) sur le web et les affiche.
  • livrable 2: créer une page de consultation d’une recette de cuisine stockée dans un format fixe (pur texte) à définir.
  • livrable 3: créer un système de compte utilisateur avec inscription d’un utilisateur, envoi d’un email de vérification, validation du compte quand l’utilisateur clique sur le lien dans l’email, une page de changement de mot de passe + consultation des caractéristiques du compte.
  • livrable 4: créer une interface de gestion des comptes utilisateurs, permettant de chercher un utilisateur, le modifier, le détruire.

Module : Images vectorielles

Module: Images Vectorielles
proposé par :

  • Jean Le Feuvre (jean.lefeuvre@telecom-paristech.fr, 96 94, bureau 5D33)
Descriptif
A la différence des images bitmap qui utilisent une représentation à base de pixels pour décrire les objets à afficher, les images vectorielles s’appuient sur des représentations mathématiques (rectangles, cercles, courbes) et sur des remplissages particulier (dégragés, …). La représentation vectorielle présente l’avantage de conserver une qualité parfaite quel que soit le facteur de zoom utilisé, mais ne peut pas représenter toutes les images, telles que capturées par un appareil photo. Elles sont plutôt réservées à la représentation d’images issues d’une création informatique. Le format appelé SVG (Scalable Vector Graphics) est le format ouvert le plus utilisé, notamment sur le web.
Ressources dont le module dépend
  • Bibliographie
    • Artcile Wikipedia: http://en.wikipedia.org/wiki/Scalable_Vector_Graphics
    • Batik: http://xmlgraphics.apache.org/batik/
Exemples d’utilisation du module
  • Visualisation interactive de données graphiques et animées
Résultats attendus
  • connaissances: Principes des formats d’images vectorielles
  • compétence : Savoir créer des images vectorielles au format SVG.
  • livrable 1: Mise en oeuvre du logiciel Batik pour convertir une image vectorielle en image bitmap