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.

 

 

Foire aux experts

La foire aux experts a lieu lundi à 8h30 en salles C46-C47-C48-C49

Chaque groupe doit apporter ses 4 posters (un par idée + un pour le concept) pour agrémenter son stand. Il doit aussi avoir préparé des questions pour les experts : ces questions (écrites sur post-it) alimenteront un stand central par lequel passeront les visiteurs.

Très bonne foire à tous !

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 : Traitement Automatique du Langage

Traitement Automatique du Langage (TAL)
proposé par :
Chloé Clavel (at telecom-paristech.fr, 7254)
complexité : moyenne

 

Descriptif
Le traitement automatique du Langage (TAL, en anglais NLP pour Natural Language Processing) est un domaine à la frontière entre l’informatique, et la linguistique. Il rassemble l’ensemble des développements visant à modéliser et reproduire, à l’aide de machines, la capacité humaine à produire et à comprendre des énoncés linguistiques dans des buts de communication (1).  Il est utilisé dans de nombreuses applications (la recherche d’information, l’extraction d’information, la traduction automatique, la reconnaissance vocale, l’analyse d’opinions sur les réseaux sociaux, le classement de documents, l’interaction humain-machine, les correcteurs orthographiques, la synthèse de la parole etc.).Le TAL repose sur deux types de méthodes : les méthodes linguistiques et les méthodes statistiques. Le premier type de méthode consiste à décrire l’information à extraire pour un métier, un domaine spécifique ou une thématique en modélisant l’information sous forme de patrons/règles linguistiques. Le deuxième type de méthode inclut par exemple des méthodes de type classification supervisé ou non supervisé, permettant de regrouper des documents similaires en fonction de leur contenu linguistique. Les méthodes utilisées font appel au domaine de l’apprentissage statistique et de la reconnaissance des formes (lien avec l’UE SI221, et le module kppv) avec une représentation des données spécifiques aux données textuelles.

 

Ressources dont le module dépend
  • aucune dépendance a priori mais possibilité d’établir des liens avec le module kppv, le module 3D et Interface (Avatar et Agents Conversationnels), le module reconnaissance de la parole
  • UE de reconnaissance des formes (SI221), Traitement des signaux audio-fréquence (parole – traitements linguistiques UE SI340)

 

 

Exemples d’utilisation du module
  • la recherche d’information, l’extraction d’information, la traduction automatique, la reconnaissance vocale, l’analyse d’opinions sur les réseaux sociaux, le classement de documents, l’interaction humain-machine, les correcteurs orthographiques, synthèse de la parole

 

 Objectifs d’apprentissage
  • Notion en apprentissage automatique et en représentation des données textuelles
  • Compétence à développer : à l’issue de ce module vous vous serez familiarisé avec les enjeux du TAL et vous aurez implémenté un système d’analyse de données textuelles

 

 Résultats attendus
  • PAN1 :
    • Savoir définir les termes suivants : TFIDF, analyse morpho-syntaxique, classification supervisée et non supervisée.
    • Savoir expliquer en quoi le TAL est a priori intéressant dans le projet du groupe.
  • PAN2 :
    • Livrable : Etude bibliographique sur le TAL
    • Livrable : Pseudo code implémentant un système d’analyse de données textuelles
  • PAN3 :
    • Livrable : code et premières mesures de performance 
  • PAN4 : Livrable : rapport de performance, en situation d’usage.

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).

Le site pédagogique de PACT