VAP ASR

Contenu des modules d'enseignement

La voie d'approfondissement propose deux UVs au semestre 8, et 5 UV au semestre 9.

Les objectifs pédagogiques ainsi que le contenu de ces UVs est accessible ci-dessous.

  • - Maîtriser les interactions entre les programmes et le système d'exploitation
    - Maîtriser les principes de base de la traduction/compilation de langages informatiques

  • - Concepts des Systèmes d’exploitation et mise en œuvre sous Linux
    . Interactions entre système multi-tâche et processus
    . Gestion de la mémoire
    . Entrées-sorties
    . Communications inter-processus (IPC)
    . Synchronisation entre processus
    . Threads
    . Architecture d'un logiciel serveur et optimisation
    - Notions sur la compilation/traduction, applications informatiques
    . Notions de vocabulaire, de grammaire
    . Analyses lexicale et syntaxique
    . Expressions régulières
    . Automates à états finis
    . Principes algorithmiques de reconnaissance

  • Ordonnancement, threads, architecture d'un logiciel serveur, compilation/traduction

  • Algorithmique (notions), Architectures matérielles (notions), Langage C (bonne pratique), Unix utilisateur (bonne pratique)

  • À l'issue du module, les étudiants seront capable, dans le cadre du développement d’une application répartie de petite taille, mais réaliste, et dont le cahier des charges est fourni, de :
    - développer entièrement une application répartie avec TCP/IP en utilisant la bibliothèque JAVA NIO avec des communications en modes connecté et déconnecté, et en modes synchrone et asynchrone,
    - lire, donner une exécution, et expliquer les preuves des algorithmes répartis de base (élection, diffusion, exclusion mutuelle, interblocage et détection de terminaison),
    - de mettre en œuvre les algorithmes étudiés par insertion dans l'application répartie développée dans le module et avec écriture de scénarios de tests simples (c.-à-d. sans utilisation de canevas logiciel d'émulation ou de simulation) pour vérifier les propriétés de correction et de progression.

  • - Communication non fiable par échange de messages (UDP),
    - Communication bidirectionnelle par canal fiable (TCP),
    - Asynchronisme, lecture non bloquante, applications multiclientes, multiserveurs,
    - Algorithmique répartie,
    - Principes de base (synchronisme/asynchronisme, spécifications, modèles...),
    - Problématique des systèmes répartis : motivations et caractéristiques fondamentales,
    - Algorithmes par vagues, écho,
    - Communications de groupe, diffusion, et ordres FIFO, causal et total,
    - Élection,
    - Exclusion mutuelle, interblocage et détection de terminaison.

  • Algorithmique répartie, programmation réseau (JAVA NIO), mise en œuvre d'algorithmes répartis

  • Algorithmique séquentielle (CSC3101, bonne pratique), Système d'exploitation UNIX (CSC3102, bonne pratique), Programmation orientée objet avec le langage Java (CSC4102, bonne pratique) , Architecture matériel et langage C (CSC4103, bonne pratique), Programmation réseau en langage C (NET4102), Programmation système (CSC4508, bonne pratique)

  • - Maîtriser les architectures de type grappes et grilles
    - Savoir concevoir, développer, exploiter des systèmes à haute performance et haute disponibilité
    - Savoir concevoir et programmer des systèmes parallèles

  • - Les fondamentaux du parallélisme
    - Principes, concepts, intérêt…
    - Architectures matérielles
    - Solutions et tendance
    - Algorithmique parallèle :
    - Modèle de communication
    - Parallélisme de données / Parallélisme de tâches
    - Les grappes de calcul
    - Outils de développement
    - OpenMP : Principes, API, Compilation, exécution, tuning, développement d'une application parallèle
    - MPI : Principes, API, Compilation, exécution, tuning, développement d'une application parallèle
    - GPU : Principes, API CUDA, Compilation, exécution
    - Programmation hybride: MPI + OpenMP
    - Analyse de performance
    - Micro-projet
    - Conférences

  • Grappes,OpenMP, MPI, GPU, HPC

  • - Algorithmique (bonne connaissance), langage C (bonne pratique), Unix (bonne pratique utilisateur), Threads (bonne pratique, cf.CSC 4508)

  • - Connaître les patrons de conception des intergiciels pour les applications réparties
    - Connaître les différentes techniques logicielles de conception et de structuration d’applications réparties : requêtes synchrones, requêtes asynchrones, architecture 3 tiers, persistance des services, Architectures Orientées Service (SOA), Assemblage de composants, orchestration de services, informatique en nuage (cloud computing)
    - Maîtriser les technologies de production d’applications réparties en entreprise : Web Services, MOM/JMS, Java EE
    - Produire des applications réparties en entreprise

  • - Les fondamentaux des intergiciels
    - Survol des solutions de construction (Architectures, SOA) et des intergiciels pour applications réparties (RMI, Java EE, Services Web, REST)
    - Patrons et canevas pour construire des intergiciels pour la répartition

    - Intergiciels pour appels synchrones (RMI, Web Services)
    - Étude d’intergiciels pour appels synchrones
    - Bases pour la programmation de serveurs d’application

    - Intergiciels orientés messages (bus de messages, MOM, système distribué basé événement (DEBS))
    - Étude d’un intergiciel orienté messages (JMS)

    - Intergiciels orientés composant avec Java EE
    - Présentation générale des concepts associés aux composants (conteneurs, propriétés extra-fonctionnelles)
    - Propriétés extra-fonctionnelles et services pour intergiciels illustrés avec Java EE (services d’annuaire, de notification, de transactions, de persistance, de sécurité)
    - Composants EJB

    - Introduction à l'informatique en nuage (cloud computing)
    - Développement et déploiement d'applications en nuage (cloud)

    - Réalisation d’un micro-projet

    - Conférences par des intervenants extérieurs

  • Intergiciel/middleware, application répartie, service, composant, Services Web, informatique en nuage/cloud computing

  • - Modélisation d’applications avec UML, programmation Java, Bases de données, Fondamentaux sur les applications, et algorithmique répartie

  • - Comprendre le Web sémantique et le Web de données (Linked data)
    - Savoir définir et exploiter une ontologie
    - Découvrir les langages du Web sémantique
    - Comparer Linked Data et Big Data
    - Apprendre et expérimenter les technologies du Big Data (Hadoop, MapReduce, des solutions de stockage NoSQL)

  • - Introduction au Web sémantique
    - Web actuel versus Web du futur
    - Les principes du Web sémantique
    - L’architecture du Web sémantique
    - Nouveaux usages du Web 2.0
    - Ontologies pour le Web sémantique
    - Notion d’ontologie
    - Création, représentation, exploitation
    - Outils et inférence (protégé, jena, ontobroker…)
    - Les langages du Web sémantique
    - XML et XML-Schema
    - RDF et RDF-Schema
    - OWL
    - Introduction au Big Data
    - Installation et déploiement d'une base de données NoSQL
    - Ecriture des requêtes suivant le paradigme mapReduce
    - Modélisation d'une base de données NoSQL
    - Conférences

  • Web sémantique, ontologies, RDF/RDFS, OWL, Linked data, Hadoop, MapReduce

  • SQL (notions), XML (notions), Java (notions)

  • Appréhender les problématiques et les technologies liées à l’IoT, en partant des environnements mobiles et ubiquitaires pour remonter jusqu'aux plateformes Cloud.

  • Le contenu de l'UV est construit afin que les étudiants puissent découvrir et pratiquer les concepts et outils pour l’IoT en suivant la chaîne des objets jusqu’au traitement des données dans le Cloud.

    Plan du cours
    - Introduction à l’IoT,
    - Objets communicants,
    - Plateforme pour l’IoT,
    - Cloud pour l’IoT (stockage et indexation des données),
    - Normes pour l’IoT.

  • IoT, Cloud, Platform-as-a-Service (PaaS), informatique ubiquitaire et mobile, objet communicant, système de stockage réparti, NoSQL.

  • CSC500x, CSC400x, CSC310x.

  • - Se familiariser avec des méthodes de gestion de projet informatique
    - Utiliser des compétences acquises au cours de la scolarité pour la réalisation d'un projet d'envergure
    - Comprendre les besoins d'un client, faire des choix d'architecture, évaluer une réalisation
    - Savoir présenter à l'oral et à l'écrit

  • Le projet de la voie d’approfondissement ASR est réalisé sur la totalité du semestre 5. Chaque étudiant doit réaliser un projet en binôme ou trinôme. Des plages sont programmées dans l’emploi du temps afin d’être dédiées à ce projet. Des rencontres avec l’encadrant du projet ont lieu toutes les deux semaines environ.

    Trois types de projet sont proposés aux étudiants : des projets d’expérimentations, des projets d’études pour le compte d'entreprises ou de collectivités et des projets de recherche.