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 ? 騁? mise en ligne environ l?.
Le cours porte sur les paradigmes de programmation avanc駸,
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駻ative : transformeurs de
pr馘icats. Programmation fonctionnelle : Scala, environnement
et 騅aluation d'une fonction, appel par valeur, appel par nom,
fonctions imbriqu馥s, port馥 lexicale. Requ黎es XML.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 2 (22 mars):
-
-
Programmation fonctionnelle?: mod鑞e
d'騅aluation, r馗ursion terminale, d馭inition de valeurs, fonctions
d'ordre sup駻ieur, fonctions anonymes, currification, types fonctionnels.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 3 (29 mars):
-
-
Abstractions de donn馥s?: objets, m騁hodes,
auto-r馭駻ence, classes et substitutions, op駻ateurs,
classes abstraites, extension d'une classe, liaison
dynamique, classes standards.
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 4 (5 avril):
-
-
Filtrage de motifs?: d馗omposition OO contre
d馗omposition fonctionnelle, classes "cas". Listes?:
constructeurs, op駻ations primitives, polymorphisme, concat駭ation.
Exceptions. La classe
List. Tri de listes, sch駑as
r馗urrents avec les listes, motifs de calcul avec fonctions d'ordre
sup駻ieur.
(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駻entiation symbolique. D駮mposition
orient?-objet et d駮mposition 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駸entation et impl駑entation (unification).
(pdf,
ps,
2on1.ps,
4on1.ps).
-
Semaine 1 (15 mars): Racine carr馥, racine cubique,
triangle de Pascal.
-
Enonc? en
(pdf) ou
(ps).
-
Solution en
(pdf) ou
(ps).
-
Semaine 2 (22 mars): Factorielle, Fibonacci,
駘騅ation ? 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鐵es,
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鑪e 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鑷ue :
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馘iaire.
(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駸eaux de contraintes.
-
Enonc? en
(pdf) ou
(ps).
-
Squelette: solver-partial.scala.
-
Solution en
(pdf) ou
(ps).
-
Pour vous faciliter la pr駱aration de l'examen final, voici quelques examens des ann馥s pass馥s.
(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騁eur 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駱ar? quelques instructions pour
l'utilisation de Scala en salle INF2.
Comment 馗rire un programme en Scala
Pour compiler et ex馗uter un programme, suivez les instructions sur la
page d'exemples de Scala.
Lien de r馭駻ence
Le site web de Scala
contient toutes les informations utiles au programmeur Scala,
en particulier la
documentation du language et de la biblioth鑷ue 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駸itez pas ? y exprimer vos interrogations, vos probl鑪es.
D'autres 騁udiants pourront peut-黎re vous aider et les assistants
s'engagent ? traiter r馮uli鑽ement les nouveaux messages. C'est aussi
par ce biais que nous vous communiquerons des annonces g駭駻ales
concernant le cours.
Le plus simple pour acc馘er au forum est de le faire?:
Enfin, si vous avez des questions g駭駻ales concernant l'utilisation
des forums de discussion ? l'EPFL vous trouverez tout sur le site?:
Usenet News
L'int馮ration des notes de programmation III et IV est termin馥. Vous pouvez consulter votre r駸ultat final sur ce document.
L'examen final a 騁? corrig?.
Les r駸ultats d騁aill駸 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鑚 une 馗helle lin饌ire (4 ? partir de 50% du nombre maximum de points possibles, 6 ? partir de 90%).
Toutefois, vu les r駸ultats alarmants du second exercice de l'examen final (sauce au curry), le nombre maximum de points possibles est d馭ini sans les 20 points de cet exercice qui devient effectivement un bonus.
Le cours est donc not? sur 150 points, d'apr鑚 le bar鑪e 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駘icitations les plus vives |
Vous pouvez consulter votre copie dans le bureau INR 320. Pour 黎re s?rs de trouver quelqu'un, prenez rendez-vous par email.
Professeur
Assistants
-
S饕astien Briais,
stairsINR317,
phone37576
-
Gilles Dubochet,
stairsINR320,
phone36867
-
Burak Emir,
stairsINR320,
phone36867
-
St駱hane Micheloud,
stairsBC346,
phone37593
-
Nikolay Mihaylov,
stairsINR321,
phone36864
Assistants-Etudiants
-
Structure and Interpretation of Computer Programs.
Harold Abelson and Gerald J. Sussman. 2nd edition. MIT Press 1996.
Consultable 馮alement
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.