|
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.
-
Semaine 1 (9 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. Requêtes XML.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 2 (16 mars):
-
-
Programmation fonctionnelle : modèle
d'évaluation, récursion terminale, définition de valeurs, fonctions d'ordre
supérieur, fonctions anonymes, currification, types fonctionnels.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 3 (23 mars):
-
-
Abstractions de données : objets, méthodes,
auto-référence, classes et substitutions, opérateurs,
classes abstraites, extension d'une classe, liaison
dynamique, classes standards.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Pâques (30 mars):
-
-
Semaine 4 (6 avril):
-
-
Filtrage de motifs : décomposition OO contre
décomposition fonctionnelle, classes "cas". Listes :
constructeurs, opérations primitives, polymorphisme, concaténation.
Exceptions. La classe
List . Tri de listes, schémas
récurrents avec les listes, motifs de calcul avec fonctions d'ordre
supérieur.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 5 (13 avril):
-
-
Semaine 6 (20 avril):
-
-
Preuve de
programmes fonctionnels: induction structurelle.
La notation For : syntaxe, exemples, traduction.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 7 (27 avril):
-
-
Fonctions et objets. Application du filtrage de
motif à la différentiation symbolique. Décomposition
orientée-objet et décomposition utilisant le filtrage de
motif.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 8 (4 mai):
-
-
Effets de bord: application à la simulation d'évènements discrets.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 9 (11 mai):
-
-
Semaine 10 (18 mai):
-
-
Semaine 11 (25 mai):
-
-
Semaine 12 (1er juin):
-
-
Semaine 13 (8 juin):
-
-
Programmation logique (1/2):
Prolog, présentation et implémentation (unification).
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 14 (15 juin):
-
-
Programmation logique (2/2): Implantation de la
recherche par retour arrière, traitement de la négation, non
correction et incomplétude.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 1 (9 mars): Racine carré, racine cubique,
triangle de Pascal.
-
Enoncé en
(pdf) ou
(ps).
-
Semaine 2 (16 mars): Factorielle, Fibonacci,
élévation à la puissance, polynôme de Lagrange.
-
Enoncé en
(pdf) ou
(ps).
-
Semaine 3 (23 mars): Ensembles d'entiers.
-
Enoncé en
(pdf) ou
(ps).
-
Semaine 4 (6 avril): Listes associatives.
- Enoncé en
(pdf) ou
(ps).
-
Semaine 5 (13 avril):
Ensemble des parties, combinaisons de pièces,
addition de grands entiers, preuve par induction structurelle.
-
Enoncé en
(pdf) ou
(ps).
-
Semaine 6 (20 avril):
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: queens-partial.scala.
-
Semaine 7 (27 avril):
Langage d'images pour les fractales.
-
Enoncé en
(pdf) ou
(ps).
-
Bibliothèque :
Vector.scala,
Frame.scala,
Graphics.scala,
PostScript.scala,
Screen.scala,
Display.java,
Painter-partial.scala.
-
Semaine 8 (4 mai): Simulateur de circuit logique.
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: Simulator-partial.scala.
-
Semaine 9 (11 mai):
-
Examen intermédiaire.
-
Semaine 10 (18 mai): Fibonacci, ln(2), nombres premiers.
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: week10-partial.scala.
-
Semaine 11 (25 mai): Réseaux de contraintes.
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: solver-partial.scala.
-
Semaine 12 (1er juin): Lisp.
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: lisp-partial.scala.
-
Semaine 13 (8 juin): Prolog, Lisp.
-
Enoncé en
(pdf) ou
(ps).
-
Interpréteur Prolog: prolog.scala.
-
Semaine 14 (15 juin):
-
Examen final.
Utilisation en salle INF2 (Windows)
Les instructions pour l'utilisation de
Scala en salle
INF2
se trouvent ici.
Comment écrire un programme en Scala
Pour compiler et exécuter un programme, suivez les instructions sur la
page d'exemples de Scala.
Lien de référence
Le site web de Scala
contient toutes les informations utiles au programmeur Scala,
en particulier la
documentation du language et de la bibliothèque standard.
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 au forum 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
Les deux examens écrits auront lieu aux dates suivantes:
|
Date |
Lieu |
Matière |
Pondération |
Examen intermédiaire |
11 mai 2005 |
INM200 (A-J),
INM202 (K-Z)
|
Semaines 1-8 |
1/3 |
Examen final |
15 juin 2005 |
INM200 (A-J),
INM202 (K-Z)
|
Toute |
2/3 |
Note:
La note finale sera calculée sur la base des points obtenus
lors de l'examen intermédiaire
et de l'examen final.
L'échelle de notes pour l'examen intermédiaire est
donnée à titre indicatif uniquement.
Professeur
Assistants
Assistants-Etudiants
- Laurent Grangier
- Raphael Haberer-Proust
-
Structure and Interpretation of Computer Programs.
Harold Abelson and Gerald J. Sussman. 2nd edition. MIT Press 1996.
Consultable également
en ligne.
-
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.
|