Contenu des enseignements de la spécialité Ingénierie Logicielle

Contenu des enseignements de la spécialité Ingénierie Logicielle

: Le cours prolonge et complète la formation dispensée en L2. Il aborde les aspects pratiques de la programmation système UNIX dans sa version libre LINUX. Contenu : Après un rappel sur les différents modes existants (mono-tache mono-processeur, multi-tâches mono-processeur, multi-tâches multiprocesseurs), ce cours détaille le mécanisme de la programmation parallèle. Les notions de tubes (« pipe »), et de mémoires partagées, sont introduites dans le contexte de la communication des processus. Leur synchronisation est étudiée avec la présentation des sémaphores. La notion de processus légers ou « threads » est alors introduite pour montrer comment réduire le temps de commutation des contextes, lorsque le système d’ordonnancement choisit de mettre en attente un processus, pour rendre actif un autre plus prioritaire. La gestion des fichiers est analysée au plus bas niveau du système (celui du noyau). La gestion de la mémoire (pagination, mémoire virtuelle), est également abordée dans l’environnement de la programmation multi-tâches. La communication par messages (systèmes distribués) dans le mode Client/ Serveur à travers les sockets permet alors à l’étudiant de comprendre le fondement de l’Internet.: L’objectif de ce cours est de permettre aux étudiants de se remettre à niveau en programmation C sous Unix. Ce cours permet une introduction au développement de projets en langage C sous Unix. Contenu : Unix: Introduction à Unix, commandes, système de fichiers, processus, interpréteurs de commandes.

Langage C: opérateurs, boucles, variables, fonctions, bibliothèques, pointeurs, tableaux, chaînes de caractères, structures, directives du préprocesseur, inclusion de fichiers, compilation, déclaration et définition des objets.Le but du cours est double : (i) présenter les idées fondamentales qui fondent les approches opérationnelle et dénotationnelle en sémantique formelle des langages de programmation et (ii) montrer, à l’aide d’exemples d’application précis, comment ces approches peuvent être utilisées pour valider des prototypes, analyser l’implémentation de fonctionnalités plus sophistiquées et vérifier certaines propriétés des programmes. Chaque type de sémantique formelle sera illustré sur un langage-test, appelé WHILE (une version très simplifiée de PASCAL) et certaines de ses extensions et variantes : construction par blocs, procédures (récursives ou non) avec liaison statique ou dynamique des variables et des procédures, non déterminisme, etc. Contenu : Description et spécification rapides du langage WHILE. Sémantique opérationnelle structurelle et sémantique naturelle du Langage WHILE et de ses extensions. Application : preuve de la correction d’un compilateur pour WHILE. Equivalence entre sémantiques naturelle et structurelle. Sémantique dénotationnelle du langage WHILE et de ses extensions. Application : analyse statique des programmes (ex : dépendance entrées-sorties). Génie logiciel I Responsable : Christine Choppy

Niveau de base de pratique de spécification précise 2. Qualité logicielle : pratique systématique et planifiée du test. Contenu : Techniques de spécification algébrique de base appliquée à la spécification formelle des structures de données de base de l’informatique (booléens, entiers, listes, piles, arbres binaires, graphes). Le langage utilisé est CASL (langage commun établi). Les structures de données choisies feront partie de celles étudiées dans le cours d’algorithmique qui a lieu en parallèle. Qualité logicielle : techniques de test de logiciel, les différentes approches de test (fonctionnelle, structurelle), et les différents critères utilisés pour sélectionner un jeu de test, plan de test. Principes d’aide à la génération de pilotes de test.La randomisation et l’approximation sont deux des principales méthodes pour aborder des problèmes qu’on ne sait pas traiter de manière à la fois déterministe, exacte et efficace. Le but du cours est d’illustrer, à travers des exemples empruntés à d’autres cours de la formation, l’impact de l’aléatoire et de l’approximation sur la conception et l’analyse des algorithmes. Contenu : Algorithmes randomisés : 1) Principes, classification et techniques (Algorithmes Las Vegas et Monte-Carlo, Principe du minmax de Yao, inégalités de queues, la méthode probabiliste en combinatoire, outils probabilistes pour l’analyse d’algorithmes, classes de complexité probabiliste.

Echantillonnage aléatoire, générateurs (pseudo-)aléatoires, et applications aux structures de données, à la programmation linéaire, à la génération de clés en cryptographie, etc. Algorithmes approximants : Cette partie est moins développée que la précédente. Elle illustre divers schémas d’approximation sur des problèmes classiques d’optimisation combinatoire ou de recherche de motifs. On donne aussi quelques outils pour apprécier la complexité d’approcher les solutions d’un problème donné (classes de complexité).Probabilités discrètes (calcul des probabilités, relation de Bayes, indépendance, variables aléatoires,…). Probabilités continues (variables aléatoires continues, distributions usuelles, distributions liées de couples aléatoires,…). Vocabulaire de statistiques descriptives. Introduction à la statistique inférentielle. Estimation : estimation sans biais ; maximum de vraisemblance ; cas de l’estimation des paramètres d’une loi normale ; théorèmes asymptotiques. Tests et décision statistique : principe minmax, principe bayesien ; notion de test, exemples ; hypothèse nulle, hypothèse alternative, erreurs de premier et deuxième type, niveau, puissance ; test d’hypothèses simples, lemme de Neyman-Pearson ; cas gaussien ; théorèmes asymptotiques.

 

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *