F. Balmas
Dépt. Informatique

Cours en Licence / Maîtrise (Licence/Maîtrise)


Programmation Avancée

Voici quelques documents distribués en cours :
  • Un listing de programme et des questions dessus
  • Le pendu à debugguer
  • Les sources de quelques programmes pour le projet de fin de semestre se trouvent ici

    Et la liste des exposés :
  • sed, par S. Berkowicz, le 4/11/04 (document)
  • apt, par C. Sauvaget, D. Julien, C. Stathis et R. Beltrutti, le 18/11/04 (document)
  • cvs, par Sébastien Tannenbaum et My Hoang, le 18/11/04 (document)
  • find, par Xavier Marlin, le 25/11/04 (document)
  • QT et Kdevelop, par Yacine Chaouche et Tarik Alla, le 2/12/04 (document)
  • vi, par Jinfeng Cao et Salim Meghdas, le 2/12/04 (document)
  • emacs, par Francois Rispal et Baya Ait Abdelmalek, le 9/12/04 (document)
  • DejaGnu, par Expérance GALOUO-LECE, le 9/12/04 (document)
  • awk, par Delphine Gauthier et Lanfng Wei, le 16/12/04 (document)
  • ctags, par Daddimy Dupuy et M. Amine Sassi, le 16/12/04 (document)
  • les formats little et big endian, par Kaced Merouan, le 6/01/05 (document)
  • Gtk + Glade, par Clément Auvray et Alexandre Homberger, le 9/12/04 (document)
  • diff, par Khaled Ben Sedrine et Kamel Matoussi, le 6/01/05 (document)

  • Manipulation et représentation de données

    Aujourd'hui, s'il est facile de trouver l'outil dont on a besoin dans le domaine public, il est par contre souvent très difficile à utiliser concrètement du fait des formats de données qu'il admet en entrée/sortie. De ce fait, on ne sait pas comment lui faire lire les données que l'on a ni comment analyser celles qu'il produit.

    Le but de ce cours est donc d'introduire les langages de scripts tels Bash, AWK ou Tcl/Tk pour la manipulation de données, notamment dans le contexte de l'interfaçage entre outils. Il montrera en particulier comment :

    réorganiser des données
    construire de nouvelles données
    extraire des données
    mettre en forme les résultats
    interfacer des données entre differents outils

    Validation : projet de manipulation et/ou représentation de données


    De l'Utilité des Langages Spécifiques

    Ce cours vise à introduire quelques langages spécifiques et notamment les langages de scripts de Linux (bash, Tcl/Tk, Perl, ...). Son objectif est double :

    1. permettre la lecture/compréhension/modification de scripts existants
    2. montrer l'utilité de tels langages pour la réalisation (rapide) d'applications spécifiques

    Validation : projet dans l'un de ces langages ou exposé


    Conception et Implémentation de Micro-Langages (Licence)

    Ce cours vise à montrer comment la résolution d'un problème par un programme peut se faire en deux étapes :

    1. l'implémentation d'un ou de plusieurs micro-langages adaptés au problème à résoudre (moteur d'inférences, frames, objets, unifieur, pattern matching, LOGO, ...),
    2. l'implémentation du programme proprement dit dans le ou les micro-langages.
    Le cours présentera plusieurs exemples concrets et discutera des avantages de cette technique de programmation.

    Validation : projet en Lisp, Smalltalk, Prolog ou C

    Informations sur le dialecte lisp local, Xbvl.


    Quelques programmes/documents à disposition :

  • Interpreteur de Lisp en C (Source C)
  • Couche objets pour Xbvl (Source Lisp)
  • Les Tours de Hanoi, version objets (Source Lisp)
  • Couche de frames pour Xbvl (Source Lisp)
  • Exemple de programme-frames (Source Lisp)
  • Interface C - Lisp (Source C et Lisp)

  • Evolution de Programmes (Licence / Maîtrise)

    Ce cours introduit plusieurs techniques de programmations dont le but est de rendre les programmes :

  • plus faciles à comprendre,
  • plus faciles à maintenir,
  • plus faciles à réutiliser.
  • Il discutera donc essentiellement de la structuration du code des programmes, et de son incidence sur les différentes activités de la programmation.

    Validation : projet
    Le dossier doit contenir le ou les listings de programmes, un texte detaillant les techniques de programmation utilisees ainsi qu'un bilan sur les avantages et/ou inconvenients de l'utilisation de ces techniques.
    Dossier à rendre au plus tard le 6 juin
    Oral le 13 juin, a 14h

    2ème session
    Retour des projets au plus tard le mardi 10 septembre à 14h (au secrétariat).
    Oral le jeudi 12 septembre de 12h à 16h30 (salle A184).


    Quelques programmes/documents à disposition :

  • Moteur de système expert (Source C, tare, compresse)
  • Le Jeu de la Vie (Source C, tare, compresse)

  • Programmation Conceptuelle / Conceptualisation de Programmes (Licence / Maîtrise)

    Ce cours vise à montrer que l'utilisation explicite des concepts est une clé pour faciliter :
  • la définition des programmes (programmation conceptuelle),
  • la compréhension des programmes existants (conceptualisation des programmes).
    Il donnera en exemple plusieurs ensembles de concepts particulièrement adaptés à ces activités.
  • Il présentera également des techniques de programmation permettant la manipulation explicite de tels concepts, telles :
  • l'abstraction de données,
  • la factorisation de code,
  • l'abstraction de fonctions,
  • la programmation dirigée par les données.
  • Finalement, il introduira un modèle de description qui conceptualise les opérations effectuées à l'intérieur de boucles. Une description dans ce modèle remplit un double rôle :
  • elle peut être la spécification d'une boucle à implémenter,
  • ou l'explication d'une boucle existante.
    Le cours esquissera alors l'implémentation d'outils utilisant ce modèle pour (partiellement) automatiser la définition ou la compréhension de boucles.
  • Validation : projet en Lisp, Smalltalk, Prolog ou C


    Algorithmique et Structures de Données (DEUG)

    Ce cours introduit principalement des algorithmes de tri et de recherche, ainsi que les structures de données fondamentales, telles que les listes, les arbres, les piles, les files ...

    ATTENTION la validation diffère pour le 1er semestre , pour la 1ère session du 2ème semestre ainsi que pour la 2ème session du 2ème semestre.


    Validation pour le cours du 1er semestre : 3 programmes imposés, ainsi qu'un examen écrit.

    Programmes à rendre :

    1. Hashcoding
      Le programme doit montrer que :
      - le placement des éléments dans les listes
      - la recherche
      - la suppression d'éléments
      fonctionne correctement.
      A envoyer par mail, en fichier ASCII dans le corps du mail, au plus tard le 20 décembre (adresse fb@ai.univ-paris8.fr )
    2. les Tris
      Le programme doit comparer l'efficacite de deux algorithmes de tri (parmi tri Bulles, tri par insertion, tri par sélection et quicksort). Pour cela, il doit au minimum compter :
      1. le nombre de tours de boucles
      2. le nombres de comparaisons entre 2 valeurs
      3. le nombre de permutations effectuees
      et cela pour plusieurs configurations initiales du tableau à trier :
      1. tableau trié en ordre inverse
      2. tableau déjà trié
      3. tri partiel
      4. aucun tri (positions aléatoires)
      Le but est de faire apparaître quel algorithme est meilleur et dans quel(s) cas. Le programme doit donc être accompagné de traces d'exécution ainsi que d'au moins une demi-page commentant les résultats obtenus.
      A envoyer par mail, en fichier ASCII dans le corps du mail, au plus tard le 20 janvier (adresse fb@ai.univ-paris8.fr )
    3. les Parcours d'arbres
      Le programme doit appliquer les trois parcours d'arbres, en ordre préfixe, infixe et postfixe, à plusieurs arbres binaires triés, contenant les mêmes nombres mais différents, de manière à montrer lequel de ces parcours produit toujours le même résultat.
      A envoyer par mail, en fichier ASCII dans le corps du mail, au plus tard le 31 janvier (adresse fb@ai.univ-paris8.fr )

    Examen écrit :


    Validation pour la 1ère session du cours du 2eme semestre : 2 projets imposés, ainsi qu'un examen écrit.

    Projets :

    Examen écrit :


    2ème session

    Validation pour la 2ème session du 2eme semestre : 1 projet imposé, ainsi qu'un examen écrit.

    Projets :

    Examen écrit :


    F. Balmas
    fb@ai.univ-paris8.fr