Tous les articles par Jean-Claude Dufourd

jcd

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 : Codage correcteur linéaire

Codage correcteur linéaire
Proposé par Olivier Rioul

 

Descriptif
Tout transmission d’information sous forme binaire, en présence de distorsion ou de bruit provoque certains types d’erreur qu’il est possible de réduire/contrôler par des techniques de codage utilisant des codes linéaires binaires de faible longueur. Leur description utilise les notations de matrice génératrice et de contrôle ce parité et on peut concevoir différents algorithmes de codage (systématique ou non) et de décodage (typiquement par « syndrome ») suivant le type d’erreurs en présence (erreurs isolées, en rafale, effacements) ou la stratégie adoptée (compromis détection/compression en présence ou non d’une voie de retour, etc). Les performances en termes de probabilité d’erreur et de rendement peuvent être comparés à la capacité de Shannon.

 

Ressources dont le module dépend

 

Exemples d’utilisation
  • Tout système de transmission d’information binaire en présence de bruit/d’erreurs bit.

 

Résultats attendus (à adapter en fonction des besoins)
  • Connaissances : codes correcteurs linaires, capacité de correction, codage systématique, décodage par syndrôme, stratégies FEC/ARQ, capacité, théorème de Shannon.
  • Compétence : comprendre et mettre en oeuvre.
  • Livrable : pseudo-code / code commenté et structuré de manière à être lisible; tests sur des flux binaires.

 

 

Module : Quantification scalaire

Quantification scalaire
Proposé par Olivier Rioul

 

Descriptif
Tout traitement devant être représenté sur une précision finie (avec un nombre fini de bits) nécessite une quantification. La quantification scalaire est une technique très simple où chaque échantillon de signal est quantifié de façon optimisée par rapport à sa distribution statistique afin d’obtenir une puissance de bruit minimale. Un algorithme optimal optimise à la fois le quantificateur (choix de cellules de quantification) et le déquantificateur (choix d’un dictionnaire). Une optimisation alternée (algorithme de Lloyd-Max I ou II) n’est optimal que pour certaines catégories de distributions (appelées log-concaves). Une optimisation conjointe à un codeur entropique implique (à résolution suffisamment haute) une quantification optimale uniforme. Les performances en termes de rapport signal à bruit fonction du taux de codage peuvent être comparées à la fonction taux-distortion optimale de Shannon.

 

Ressources dont le module dépend

 

Exemples d’utilisation
  • Tout système de traitement numérique de signaux (son, parole, image, vidéo)

 

Résultats attendus (à adapter en fonction des besoins)
  • Connaissances : quantification de Lloyd-Max, quantification non-uniforme optimisée, calcul de performances haute-résolution en présence ou non d’un codeur entropique, fonction taux-distorsioon et théorème de Shannon.
  • Compétence : comprendre la problématique de la quantification et plus généralement du codage avec distortion et être capable de mettre en oeuvre un algorithme de quantification optimisée.
  • Livrable : pseudo-code / code commenté et structuré de manière à être lisible; tests sur des sources gaussiennes.

 

 

Module : Compression entropique

Compression entropique
Proposé par Olivier Rioul

 

Descriptif
La compression sans pertes ou codage entropique désigne un ensemble de méthodes de mathématiques discrètes pour réduire le volume occupé par des données (par exemple un fichier de texte) en réduisant la redondance statistique présente dans les données. La méthode la plus utilisée consiste à utiliser des représentations codées à longueur variable, le code étant d’autant plus court que l’élément à coder est fréquent. Cette technique s’applique directement aux fichiers de données que l’on veut comprimer sans erreur mais elle peut aussi s’appliquer en s’ajoutant à des techniques de compression avec perte (compression de son, d’images, de vidéo) de façon à améliorer les performances. La mesure théorique de compression s’effectue à l’aide d’un outil de théorie de l’information appelé l’entropie qui représente le taux minimum en deçà duquel on ne plus comprimer l’information sans perte. Les algorithmes standard de compression utilisent trois techniques fondamentales: codage de Huffman, codage de Lempel-Ziv, codage arithmétique.

 

Ressources dont le module dépend

 

Exemples d’utilisation
  • Tout système de traitement numérique de signaux (son, parole, image, vidéo)

 

Résultats attendus (à adapter en fonction des besoins)
  • Connaissances : codage à longueur variable, codes de Fano-Shannon, codes de Huffman, codage de Lemel-Ziv, codage arithmétique, entropie et théorème de Shannon.
  • Compétence : comprendre la problématique de la compression sans pertes et et être capable de mettre en oeuvre un algorithme de codage adaptatif à longueur variable.
  • Livrable : pseudo-code / code commenté et structuré de manière à être lisible; tests sur des sources académiques avec ou sans mémoire.

 

 

Module : GPIO via Android

GPIO via Android
Proposé par :

  • Tarik Graba (@telecom-paristech.fr)
Descriptif
L’objectif de ce module est de mettre en oeuvre un composant électronique réalisant l’interface USB/GPIO et à le piloter depuis un smartphone ou une tablette sous Android.Un GPIO est un port qui permet à un système de communiquer numériquement  avec le monde extérieur. Il peut être configuré comme une entrée : dans ce cas, en fonction de la tension appliquée à la broche, le circuit « lit » un 1 ou un 0 logique. Il peut également être configuré comme une sortie : dans ce cas le circuit « écrit » un 0 ou un 1 logique, ce qui est traduit par une tension différente sur la broche. Le port GPIO peut ainsi être connecté à des capteurs ou à des actionneurs.Le circuit électronique proposé possède une interface USB, permettant ainsi de le brancher à un smartphone par exemple, et un certain nombre de GPIO. Il est également facilement pilotable depuis Android.En le mettant en oeuvre, votre application Android pourra ainsi récupérer des informations depuis des capteurs ou piloter des actionneurs.
Ressources dont le module dépend
  • Site de référence du composant
    • http://www.ftdichip.com/Android.htm
Objectifs pédagogiques
  • Électronique : savoir lire une documentation technique d’un composant (datasheet), comprendre le fonctionnement d’un GPIO
  • Informatique : savoir dialoguer avec un périphérique
Exemples d’utilisation du module
  • Pilotage de LEDs, d’afficheurs, de moteurs depuis une application Android
  • Récupération d’informations de capteurs depuis une application Android
Résultats attendus (à adapter en fonction des besoins)
PAN1

  • Compréhension du fonctionnement du composant en lisant sa datasheet

PAN2

  • Réalisation du circuit imprimé mettant en oeuvre le composant
  • Application Android pilotant le composant

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

Réunions à venir et dates importantes

comité de pilotage (MC,BD,MG,JL,MDN, GD,JCD) :

  • mardi 03/09, 9:30, DA006 à Dareau
  • 13/09 à 13:30 à Barrault, C06.

tuteurs :

  • le jeudi 12/09, 13:30, B316 : première réunion plenière : TRES IMPORTANT (informations sur le dispositif 2013, changements, edt, rôle du tuteur, méthode d’idéation) .
  • jeudi 17 octobre 9:30-11
  • mardi 26 novembre 14:00-15:00
  • lundi 16 décembre 13:00-14:00

Je vous rappelle également des dates importantes au début de pact * 21 octobre : lancement de pact * lundi 18 novembre : foire aux experts (matin) * mardi 26 novembre : foire aux composants (après midi) * lundi 2 decembre : foire experts libre (tlj, présence sur barrault nécessaire) * 9 décembre : journée GL

Module : Manipulation de fichiers ou d’appareils MIDI

Module: Lecture, traitement et sauvegarde de fichiers ou appareils MIDI
proposé par :

  • Jean-Claude Dufourd (dufourd_at_telecom-paris.fr, 9691, bureau 5D30)
Descriptif
Ce module concerne les manipulations habituelles simples de fichiers ou appareils MIDI, sur PC ou sur Android.
Ressources dont le module dépend
Exemples d’utilisation du module
  • pour tout traitement de midi, lu, calculé, modifié, stocké
Résultats attendus
  • connaissances : maitrise du son en version midi, pour des traitements courants
  • compétence :  à l’issue de ce module vous aurez  écrit en Java un programme qui lit du midi dans un fichier et le joue, modifie des séquences midi et les stocke dans un fichier, génère une séquence midi à partir d’une autre notation.
  • livrable 1: programme qui lit un fichier midi, le joue sur PC
  • livrable 1b: idem sur Android
  • livrable 2: programme qui génère ou modifie une séquence midi, l’enregistre dans un fichier sur PC
  • livrable 2b: programme qui génère ou modifie une séquence midi, l’enregistre dans un fichier sur Android
  • livrable 3: programme qui se connecte à un appareil Midi (ex: clavier/piano) et qui traite les informations reçues en temps réel depuis l’appareil
Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.