Conception & Construction de Programmes

Quatrième année 'Ingénieur"
Institut National d'Informatique
25 séances de 1h3O

D.E ZEGOUR & W.K HIDOUCI

PARTIE I   : CONCEPTION DE PROGRAMMES PARTIE II : CONSTRUCTION DE PROGRAMMES
O-notation Systèmes formels
Graphes et Arbres Théorie du point fixe
Diviser pour régner Programmation procédurale   et le     projet "Concorde"
Programmation dynamique Programmation fonctionnelle
Exploration systématique de graphes Programmation logique
Heuristiques La programmation objet (PO)
  Le projet "Ecole 2000"
Spécifications de programmes et de systèmes
 


PARTIE I : CONCEPTION DE PROGRAMMES 

    1. Concepts préliminaires 

        A. O-notation   Menu Plan
            Introduction
            O-notation
            Opérations
                Somme
                Produit
            Règles générales
            Exemple
            Analyse des algorithmes récursifs
                Dilatation
                Devinette
                Récurrence
            Analyse des algorithmes à 'GOTO'
    
        B. Graphes et Arbres   Menu Plan
            Introduction
            Définition
                Graphe orienté
                Graphe non orienté
            Représentation mémoire
                Matrice
                Tableau de listes
            Modèle
            Parcours des graphes
                'Depht first search'
                'Breadh First search' 
            Applications.
                Détermination du plus court chemin ( Algorithme de Dijkstra)
                Problème du Voyageur du Commerce (PVC)

    2. Diviser pour régner  Menu Plan
        A. Principe général
        B. Applications
            Tri par fusion
            Multiplication de grands nombres
            Organisation d'un tournoi    
            Tour de Hanoi
        C. Recommandations

    3. Programmation dynamique  Menu Plan
        A. Principe général
        B. Applications
            Triangle de PASCAL
            Série mondiale
            Multiplication chaînée de matrices
            Les plus courts chemins

    4. Exploration systématique de graphes   Menu Plan
        A. Introduction
        B. Exploration en profondeur : Backtracking        
            Exemples
                Placer 8 reines dans un échiquier
                Problème des cruches d'eau
                Sortie d'un labyrinthe
            Application dans les arbres de jeu
                Min-Max
                    Jeu des X et des O
                    Jeu des billes
                Elagage(Coupe) alpha-béta
                Exemple    
            Exploration en largeur
                Passage de a à b avec application d'un nombre minimal de fonctions 

    5. Heuristiques   Menu Plan
        A. Introduction
        B. Recherche d'une branche
            Hill Climbing
            Beam Search
            Best First Search
        C. Recherche de la meilleure branche
            Branch and Bound
            Branch and Bound avec sous estimations
            Branch and Bound avec programmation dynamique
            A*

PARTIE II : CONSTRUCTION DE PROGRAMMES 

    1. Concepts préliminaires :

        A. Systèmes formels   Menu Plan
            Définition d'un système formel
                Morphologie
                Théorie propre
                Classes d'un système formel
                Classes données
                Classes construites
            Décidabilité des systèmes formels 
            Restrictions 
            Un exemple de système formel
            Quelques systèmes formels
                Système relationnel
                Système logique
                Système applicatif

        B. Théorie du point fixe   Menu Plan
            Rappel
                Ensemble ordonné
                Majorant, Minorant
                Borne inférieure, borne supérieure
                Treuilli, treuilli complet
                Fonction croissante
                Fonction continue
            Théorème du point fixe 
                Enoncé
                Démonstration
    
    2. Programmation procédurale   Menu Plan
        A. Introduction
        B. Les différents schémas
            B-schémas
            D-schémas
            R-schémas
            BJn-schémas 
            REn-schémas 
            RECn-schémas
            Variantes 
            Comparaison des structures
                Relation entre schémas
                Relation entre structures
                Quelques résultats
        C. Transformations
            Définition
            Quelques transformations remarquables
                Bohm et Jacoppini : B --> D 
                Méthode par automate : B --> D
                Arsac : B --> REn 
                Williams and Chen : B --> D
                Ramshaw : B-->REn
                R --> B ( Procédé sémantique )
        D. Preuves
            Introduction
                Correction partielle
                Correction totale
            Preuves sur les D-schéma(Hoare)
                Axiome d'affectation
                Règles de la séquentielle, l'implication,
                la conditionnelle, la répétitive
                Problème de l'arrêt 
            Preuves sur les R-algorithmes
                Règle de l'appel récursif(Hoare)
                Exemple            
            Preuves sur les B-algorithmes(Floyd)
            Automatisation
        
    
        E. Le projet "CONCORDE"  Menu Plan
		Introduction
            	Les différents types de schéma
            	Construction
            	Correction
            	Transformation
            	Objectif pratique
            	Objectif pédagogique
		Les  travaux réalisés	  

    3. Programmation fonctionnelle   Menu Plan
        A. Introduction
            Définition
            Caractéristiques
            Schéma fonctionnel
            Quelques langages fonctionnels
        B. Lambda-Calcul
            Variables et fonctions en mathématiques
            La (-notation
            Fonction à plusieurs arguments
            Les systèmes (-applicatifs
            Grammaire du (-calcul
            Notion de variables libres et liées
            Changement de variables
            Substitution
            Contraction
            Réduction
            Théorie propre du -calcul
            Forme normale
            Ordre de réduction 
            Théorème de Church-Rosser ( première forme )
            Théorème de Church-Rosser ( deuxième forme )
            Fonctions récursives
        C. Preuves
            Deux approches : système formel et point fixe
            Approche "Point fixe"
                Concepts mathématiques
                    Notion de fonctionnelle et de point fixe.
                Fonction moins définie
                Convergence
                Idée de la preuve
                Exemples
        D. Le langage LISP
            Objets
            Structure d'un programme
            Primitives de manipulation des listes 
            Primitives booléennes
            Définition de nouvelles fonction 
            Fonctionnelle (Fonction de fonctions)
            Exemples

        E. Interpréteur 
            . Forme interne 
            . Algorithme d'interprétation.

    
    4. Programmation logique   Menu Plan
        A. Introduction
        B. Logique des prédicats du premier ordre
            Syntaxe
            Sémantique
            Propriétés
            Inconsistance et validité d'une formule
            Variables libres, variables liées    
            Forme normale conjonctive
            Forme normale disjonctive
            Règle d'inférence

        C. Démonstrateur automatique
            Substitution
            Unification
                Couple de désaccord
                Algorithme d'unification
            Principe de résolution
                Algorithme général de résolution
                Détermination des résolvantes
                Résolution dans un cas simple
                Propriété de la résolution
            Résolution dans Prolog
                Clauses de Horn         
                Les différents cas
                Pas d'inférence 
                Exemples

        D. Le langage PROLOG
            Concepts généraux
            Données manipulées
            Portée des variables et des constantes 
            Structure d'un programme 
            Structure interne 
            Opérations
            Exemples
            Fonctionnement de Prolog sur un exemple

    5. La programmation objet (PO)   Menu Plan
        A. Présentation
            Origine des langages Objet
            Introduction
            Concepts de la POO
                Encapsulation
                Héritage (Surcharge)
                Polymorphisme
            Conception POO
        B. Illustration de la POO en Pascal
            Définition d'objet(encapsulation)
            Héritage
            Redéfinition de méthode(surcharge)
            Objets dynamiques
            Polymorphisme
            Méthodes virtuelles

        C. Application : TURBO-VISION
            Généralités 
                Introduction
                Objets visuels     
                événements 
                Objets muets
                Hiérarchie des classes
            Exemple 
                Le programme
                Commentaires

    6. Le projet 'Ecole 2000'  Menu Plan
		Introduction
            	Les différents types de schéma
            	Construction
            	Evaluation
            	Objectifs 
		Les  travaux réalisés

    7. Spécifications de programmes et de systèmes  Menu Plan
        A. Introduction
        B. Spécification de programmes
            Introduction
            Opérationnelle ( Calculatoire )
            Denotationelle ( Relationnelle )
        C. Spécification de systèmes
            Introduction
            Idées générales
                Usage
                Qualités
                Orientation
            Spécification algébrique
            Spécification relationnelle
            Spécification Z