Programmation IV
Summer Semester 2002
School of Computer and Communication Sciences
Programming Methods Laboratory (LAMP)
 
 
Home
Staff
Research
Publications
Events
Teaching
  Prog IV
    Survol
    Horaires
    Transparents
    Exercices
    Livres
    Contacts
Jobs
   
 
  
     

Nouveautés

11/06/02
12/06/02
  • Précisions concernant le contenu de l'examen.
14/06/02
17/06/02
19/06/02

Examen

Contenu de l'examen : étant donné que nous avons eu beaucoup de questions au sujet du contenu de l'examen, voici quelques précisions :

  • l'examen portera sur l'ensemble du cours et des exercices jusqu'à la séance d'hier (11 juin),
  • pour Lisp et Prolog, vous devez connaître les bases de ces deux langages et être capable d'écrire des programmes simples, du type de ceux vus au cours et aux exercices ; il n'est par contre pas indispensable que vous compreniez les détails des interpréteurs.
  • les appareils électroniques sont interdits pendant l'examen, mais sinon vous pourrez consulter n'importe quel document papier que vous aurez apporté (transparents, notes de cours, etc...).

Une séance de réponse aux questions aura lieu le 11 juin 2002 de 13h à 15h dans la salle IN/M 201.

L'examen final aura lieu le 18 juin 2002 de 10h00 à 12h00 en salles CO/2 et CO/3.

Nous ferons un examen de test, non obligatoire, le 28 mai de 14h15 à 15h15 en salle CO/2.

Donnée de l'examen de test : (ps) (ps.gz). Corrigé : (ps) (ps.gz).

Donnée de l'examen final : (ps) (ps.gz). Corrigé : (ps) (ps.gz).

Survol

Le cours porte sur les paradigmes de programmation avancés, en couvrant notamment :
  • la Programmation Fonctionnelle
  • la Programmation Logique
Pour la programmation fonctionnelle on utilisera le langage Scala.

Horaires

Cours: mardi 10:15-12:00, salle CO2
Exercices: mardi 14:15-16:00, salle CO2 / IN3

Transparents

Cours 1 (12 mars).
Introduction, programmation impérative : transformeurs de prédicats, programmation fonctionnelle : Scala, environnement et évaluation d'une fonction, appel par valeur, appel par nom, fonctions imbriquées, portée lexicale.
Cours 2 (19 mars).
Programmation fonctionnelle : modèle d'évaluation, récursion terminale, définition de valeurs, fonctions d'ordre supérieur, fonctions anonymes, currification, types fonctionnels.
Cours 3 (26 mars).
Abstraction des données : objets, méthodes, auto-référence, classes et substitutions, opérateurs, classes abstraites, extension d'une classe, liaison dynamique, classes standards
Cours 4 (9 avril).
Les listes : constructeurs, opérations primitives, polymorphisme, concaténation, les exceptions, la classe List, tri de listes, schémas récurrents avec les listes, généralisations avec des fonctions d'ordre supérieur.
Cours 5 (16 avril).
Tuples, traitements imbriqués sur les listes, preuves de programmes fonctionnels, induction structurelle.
Cours 6 (23 avril).
La notation For : syntaxe, utilisation, traduction, généralisation. Expressions de création d'objet.
Cours 7 (30 avril).
Classes cas et filtrage de motifs, application à la différentiation symbolique.
Cours 8 (7 mai).
Effets de bord, application à la simulation d'événements discrets.
Cours 9 (14 mai).
Programmation par contraintes.
Cours 10 (21 mai).
Flots et itérateurs.
Cours 11 (28 mai).
Lisp : présentation du langage, conception d'un interpréteur en Scala.
Cours 12 (4 juin).
Un interpréteur Lisp en Scala.
Cours 13 (11 juin).
Programmation logique (1): Prolog, présentation et implémentation (unification).
Cours 14 (18 juin).
Programmation logique (2): Implantation de la recherche par retour arrière, traitement de la négation, non correction et incomplétude.

Exercices

A chaque fois que vous utilisez un interpréteur interactif, comme siris, l'interpréteur Lisp de la série 12 ou l'interpréteur Prolog de la série 13, vous pouvez utiliser le petit programme ledit qui permet de retrouver les commandes tapées précédemment avec les flèches directionnelles, ou de corriger la ligne de commande qu'on vient de taper (comme dans un shell). Pour l'utiliser, tapez par exemple : ledit siris ou ledit surus lisp-partial.scala .

Comment tester vos programmes

Vous devez rajouter dans la variale PATH le chemin :
/home/iclamp/soft/bin
en tapant la commande:
setenv PATH /home/iclamp/soft/bin:$PATH
Voici une petite description des programmes qui s'y trouvent :
  • siris: (SIris InteRprets Scala) interprète interactif
  • surus: (SUrus RUns Scala) interprète non-interactif

Pour exécuter un programme, utiliser surus en lui passant en argument le nom du fichier à exécuter. Avec siris, vous avez un interprète interactif. Celui-ci commence par exécuter les programmes qui lui sont passés en argument puis il interprète tout ce qui vient de l'entrée standard.

Les programmes passés en argument à surus ou siris, ou tapés directement dans siris, peuvent contenir des définitions et des expressions. Dans l'interprète siris, les val et les expressions sont évalués et affichés immédiatement.

Remarques

  • Le suffixe des fichiers contenant des programmes Scala est par convention .scala.
  • Il n'est plus nécessaire de définir une fonction main comme point d'entrée d'un programme. Toute expression "top-level" sera exécutée immédiatement.
  • Vous pouvez utiliser l'API Java.
  • L'interprète est encore en cours de développement. Il risque donc d'y avoir quelques bogues. Soyez indulgents.

Livres recommandés

  • Structure and Interpretation of Computer Programs. Harold Abelson and Gerald J. Sussman. 2nd edition. MIT Press 1996.
  • Approche Fonctionnelle de la Programmation. Guy Cousineau et Michel Mauny. Ediscience International. 1998.
  • Introduction to Functional Programming using Haskell. Richard Bird. Prentice Hall 1998.
  • Foundations of Logic Programming. J.W. Lloyd. Springer Verlag. 1984.
  • Effective Java. Joshua Bloch. Addison Wesley, 2001.

Forum de discussion

Le cours a maintenant son forum de discussion : epfl.ic.cours.programmationIV.

N'hésitez pas à y exprimer vos interrogations, vos problèmes D'autres étudiants pourront peut-être vous aider et les assistants s'engagent à traiter régulièrement les nouveaux messages. C'est aussi par ce biais que nous vous communiquerons des annonces générales concernant le cours.

Le plus simple pour accéder aux news est de le faire : Enfin, si vous avez des questions générales concernant l'utilisation des forums de discussion à l'EPFL vous trouverez tout sur le site : Usenet News

Contacts

Professeur Assistants Assistants étudiants
     
   [an error occurred while processing this directive]  
Last modified: Monday, 01-Mar-2004 14:35:58 CET