|
Cours:
|
mercredi 13:15-15:00, salle
C01
(mercredi 15:15-17:00, salle
INM202)
|
Exercices:
|
mercredi 15:15-17:00, salle
INF2
|
-
11 août 2006
-
-
La correction de l'examen final à été mise en ligne environ là.
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 (15 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 (22 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 (29 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).
-
Semaine 4 (5 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 (12 avril):
-
-
Semaine 6 (26 avril):
-
-
Preuve de
programmes fonctionnels: induction structurelle.
La notation For : syntaxe, exemples, traduction.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 7 (3 mai):
-
-
Fonctions et objets. Application du filtrage de
motif à la différentiation symbolique. Déomposition
orienté-objet et déomposition utilisant le filtrage de
motif.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 8 (10 mai):
-
-
Semaine 9 (17 mai):
-
-
Semaine 10 (24 mai):
-
-
Semaine 11 (31 mai):
-
-
Semaine 12 (7 juin):
-
-
Semaine 13 (14 juin):
-
-
Programmation logique (1/2):
Prolog, présentation et implémentation (unification).
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 1 (15 mars): Racine carrée, racine cubique,
triangle de Pascal.
-
Enoncé en
(pdf) ou
(ps).
-
Solution en
(pdf) ou
(ps).
-
Semaine 2 (22 mars): Factorielle, Fibonacci,
élévation à la puissance, polynôme de Lagrange.
-
Enoncé en
(pdf) ou
(ps).
-
Solution en
(pdf) ou
(ps).
-
Semaine 3 (29 mars): Ensembles d'entiers.
-
Enoncé en
(pdf) ou
(ps).
Source des classes IntSet.
-
Solution en
(pdf) ou
(ps).
-
Semaine 4 (5 avril): Listes associatives.
- Enoncé en
(pdf) ou
(ps).
-
Solution en
(pdf) ou
(ps).
-
Semaine 5 (12 avril):
Ensemble des parties, combinaisons de pièces,
addition de grands entiers, preuve par induction structurelle.
-
Enoncé en
(pdf) ou
(ps).
-
Solution en
(pdf) ou
(ps).
-
Semaine 6 (26 avril):
Induction structurelle, preuve de l'inversion de listes, problème des n-reines.
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: queens-partial.scala.
-
Solution en
(pdf) ou
(ps).
-
Semaine 7 (3 mai):
Langage d'images pour les fractales.
-
Enoncé en
(pdf) ou
(ps).
-
Bibliothèque :
Painter-partial.scala.
-
Solution en
(pdf) ou
(ps).
-
Semaine 8 (10 mai): Simulateur de circuit logique.
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: Simulator-partial.scala.
-
Solution en
(pdf) ou
(ps).
-
Semaine 9 (17 mai):
-
Examen intermédiaire.
(pdf) ou
(ps).
-
Solution en
(pdf) ou
(ps).
-
Semaine 10 (24 mai): Fibonacci, ln(2), nombres premiers.
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: week10-partial.scala.
-
Solution en
(pdf) ou
(ps).
-
Semaine 11 (25 mai): Réseaux de contraintes.
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: solver-partial.scala.
-
Solution en
(pdf) ou
(ps).
-
Pour vous faciliter la préparation de l'examen final, voici quelques examens des années passées.
(2004 fin) (2005 fin)
(2004 mid) (2005 mid)
-
Et voici les solutions.
(2004 fin) (2005 fin)
(2004 mid) (2005 mid)
-
Semaine 12 (7er juin): Lisp.
-
Enoncé en
(pdf) ou
(ps).
-
Squelette: lisp-partial.scala.
-
Solution en
(pdf) ou
(ps).
Code de la solution: lispNew.scala powerset.lisp.
-
Semaine 13 (14 juin): Prolog, Lisp.
-
Enoncé en
(pdf) ou
(ps).
-
Interpréteur Prolog: prolog.scala.
-
Solution en
(pdf) ou
(ps).
-
Semaine 14 (21 juin): Examen final
-
Enoncé en
(pdf) ou
(ps).
-
Solution en
(pdf) ou
(ps).
Utilisation en salle INF2 (Windows)
Nous avons préparé quelques instructions pour
l'utilisation de Scala en salle INF2.
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.
Vous pouvez egalement profiter des EclipseTutorials.zip (format .doc, anglais) pour installation et execution des programmes en Eclipse.
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
L'intégration des notes de programmation III et IV est terminée. Vous pouvez consulter votre résultat final sur ce document.
L'examen final a été corrigé.
Les résultats détaillés pour le cours sont disponible sur ce document.
Le calcul de votre note se fait sur la somme des points que vous avez obtenus sur les deux examens, d'après une échelle linéaire (4 à partir de 50% du nombre maximum de points possibles, 6 à partir de 90%).
Toutefois, vu les résultats alarmants du second exercice de l'examen final (sauce au curry), le nombre maximum de points possibles est défini sans les 20 points de cet exercice qui devient effectivement un bonus.
Le cours est donc noté sur 150 points, d'après le barème suivant.
Points | Note |
0 | 1.0 |
1-14 | 1.5 |
15-29 | 2.0 |
30-44 | 2.5 |
45-59 | 3.0 |
60-74 | 3.5 |
75-89 | 4.0 |
90-104 | 4.5 |
105-119 | 5.0 |
120-134 | 5.5 |
135-149 | 6.0 |
150-170 | 6.0 |
Avec nos félicitations les plus vives |
Vous pouvez consulter votre copie dans le bureau INR 320. Pour être sûrs de trouver quelqu'un, prenez rendez-vous par email.
Professeur
Assistants
-
Sébastien Briais,
INR317,
37576
-
Gilles Dubochet,
INR320,
36867
-
Burak Emir,
INR320,
36867
-
Stéphane Micheloud,
BC346,
37593
-
Nikolay Mihaylov,
INR321,
36864
Assistants-Etudiants
-
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.
|