Université de Sherbrooke

publicité
Plan de cou
urs
IFT
I 359 – Prog
grammation fonnctionnelle
Étté 2013
Département d’iinformatique
IF
FT 359
Pro
ogramma
ation foncctionnelle
Pllan de cours
Été 2013
Enseignan
nt
Benoît Fraikin
Courrieel :
Local :
Télépho
one :
Site :
Dispon
nibilité :
Benoiit.Fraikin@US
Sherbrooke.ca
D4-20
009
(819) 821-8000 postte 62013
http:///pages.usherbrooke.ca/bfraikkin/Cours/IFT359
à déteerminer, à vériffier par courrieel
Horaire
Jeudi
15h30 à 17
7h20, salle de cours D4-2021
Vendreedi 10h30 à 12
2h20, laboratoirre D4-1017
Descriptio
on officielle dee l'activité péd
dagogique1
Objectifs
Formaliser les notionss d'abstraction procédurale ett d'abstraction de données danns le cadre de la
program
mmation fonctiionnelle.
Contenu
Qualitéé, modularité, conception
c
foncctionnelle. Proocessus récursiffs et itératifs. O
Objets atomiquues,
listes, sélection,
s
abstraaction d'ordre supérieur. Absstraction à l'aidde de flots. Exeemples faisant appel
à des allgorithmes spécifiques et aux
x structures de données assocciées. Insistance sur la qualitéé de la
solution
n. Introduction
n à la preuve dee programme.
Crédits
3
Organisation
maine
3 heurees d’exposé maagistral par sem
1 heuree d’exercices paar semaine
5 heurees de travail perrsonnel par sem
maine
Antérieuree
IFT 159
9
1
http://ww
ww.usherbrooke.caa/fiches-cours/ift35
59
30-04-2013
1
Plan de cours
1
1.1
IFT 359 – Programmation fonctionnelle
Été 2013
Présentation
Mise en contexte
Le cours IFT 359 introduit les étudiants à la programmation fonctionnelle. Celle-ci a débuté avec le langage Lisp
créé par J. McCarthy en 1958, dans les mêmes années où les langages de haut niveau supportant la programmation
impérative (procédurale/structurée) tels que Fortran (1957) et Algol (1958) en étaient à leurs débuts. Tandis que la
programmation impérative est basée sur un modèle où un état change en fonction des opérations effectuées (machine
de Turing), ce qui est très proche de l’implémentation physique (registres, mémoire, jeu d’instructions de l’UCT,
etc.), la programmation fonctionnelle est basée sur un modèle mathématique (lambda calcul) dans lequel une
fonction, souvent récursive, prend une entrée et calcule une sortie. La programmation fonctionnelle, restée dans
l’ombre de la programmation impérative, refait maintenant surface, car ses propriétés sont très utiles pour faire face
à certains problèmes actuels (e.g. LINQ, MapReduce) notamment dans la programmation parallèle sur de multiples
cœurs. Dans le cadre du cours, nous allons étudier le langage Haskell. Plus particulièrement, nous allons utiliser la
plateforme Haskell (http://www.haskell.org/platform/). Le langage Haskell (1990 et 1998) a été développé
pour consolider les acquis des dernières décennies. Il se différencie de Lisp par son typage statique totalement
inféré, ses effets de bord contrôlés et son évaluation paresseuse. De nombreux autres langages fonctionnels ou des
extension fonctionnelles ont été développés depuis, en voici un aperçu :
1. Le langage Erlang (1986), développé par Ericsson, se base sur la programmation fonctionnelle pour offrir
un langage propre à la programmation concurrente, parallèle et temps réel.
2. Le langage Scheme et ses dialectes (Racket, MIT Scheme), souvent utilisés dans le milieu académique, est
un langage très bien supporté par de nombreux outils et des compilateurs efficaces.
3. Le langage JavaScript (1995) supporte de nombreux concepts de programmation fonctionnelle.
4. Common Lisp (1984), OCaml (1996) et Scala (2003) sont des langages qui combinent la programmation
fonctionnelle et la programmation orientée objet.
5. Plusieurs langages (Clojure, Scala et F#) ont appliqué la programmation fonctionnelle à des architectures
logicielles existantes (la JVM et le .NET framework).
6. Le C++ dans sa dernière version (C++11) permet de développer avec un style fonctionnel.
1.2
Objectifs spécifiques
L'objectif du cours est double : apprendre la programmation fonctionnelle et des techniques avancées de programmation souvent propre à la programmation fonctionnelle. Certaines techniques peuvent être mises en applications
dans certains langages qui ne sont pas fondamentalement fonctionnels, comme le C ou le Java.
1.3
Contenu détaillé
Thème
30-04-2013
Contenu
Heures
0
Lecture du plan de cours, introduction à la pensée fonctionnelle et histoire
2
1
Principes du langage Haskell, utilisation de l’interpréteur
2
2
Compilation, entrées et sorties en Haskell : la monade IO
4
3
Typage : importance, inférence automatique, fiabilité
4
4
Listes, récursivité et fonctions
6
5
Fonctions de haut niveau, itérateur, abstraction fonctionnelle
8
6
Données structurées, algorithmes et abstraction des données
8
7
Programmation par continuation
6
8
Classes de types
5
9
Programmer avec des états : les monades.
5
2
Plan de cours
2
2.1
IFT 359 – Programmation fonctionnelle
Été 2013
Organisation
Méthode pédagogique et évaluation
Une semaine comprend quatre heures de cours dans lesquelles s’entremêlent la matière présentée par des
diapositives, des exemples et des exercices. L’évaluation se fait à l’aide de sept devoirs et deux examens. Seules les
six meilleures notes des devoirs seront comptabilisées. Aucun retard ne sera admis sans une raison qui doit être
acceptée par la Faculté.
Devoirs (6 meilleures notes parmi 7 x 10 %) : 60 %
Examen périodique d’une heure :
10 %
Examen final de trois heures :
30 %
2.2
Calendrier du cours
Cours du
Activité
Contenu
2 mai
3 mai
9 mai
10 mai
14 mai 2
16 mai
17 mai 1
21 mai 2
23 mai
24 mai
30 mai
31 mai
6 juin
7 juin
13 juin
14 juin
15 au 22 juin 3
27 juin
28 juin
4 juillet
5 juillet
11 juillet
12 juillet
18 juillet
19 juillet
25 juillet
26 juillet
1 août
2 août
6 au 16 août 3
Lecture du plan de cours et introduction
laboratoire
cours
laboratoire
cours 2
cours
laboratoire 1
cours 2
cours
laboratoire
cours
laboratoire
cours
laboratoire
cours
laboratoire
Examen périodique 3
pas d’activité
pas d’activité
cours
laboratoire
cours
laboratoire
cours
laboratoire
cours
laboratoire
cours
laboratoire
Examen final 3
0
1
2
2
3
3
4
4
5
4-5
5
4-5-6
6
4-5-6
6
6
6
4-5-6
7
7
7
8
8
8/9
9
9
Travaux
Devoir 1
Devoir 2
Devoir 3
Devoir 4
Devoir 5
Devoir 6
Devoir 7
1
Il y a laboratoire le vendredi 17 mai (Festival des harmonies).
Les 14 et 21 mai il y aura un rattrapage de 15h30 à 17h20 en salle de cours (D3-2033).
3
La Faculté des sciences détermine l’horaire des examens. Durant les semaines où se tiennent les examens, il n’y a pas cours.
2
30-04-2013
3
Plan de cours
3
IFT 359 – Programmation fonctionnelle
Été 2013
Références
[ASS96]
ABELSON, H., SUSSMAN, G. et SUSSMAN, J.,
Structure and Interpretation of Computer Programs, Second Edition,
Mc Graw Hill, 1996.
http://mitpress.mit.edu/sicp/full-text/book/book.html
[Cha96]
CHAZARAIN, J.,
Programmer en Scheme : de la pratique à la théorie,
Vuibert, 1996.
[Dyb96]
DYBVIG R. K.,
The Scheme Programming Language, Second Edition,
Prentice Hall, 1996.
http://www.scheme.com/tspl2d/index.html
[Fel01]
FELLEISEN M. et al.,
How to Design Programs,
MIT Press, 2001.
http://www.htdp.org
[IFT359] FRAIKIN B.
Site du cours
pages.usherbrooke.ca/bfraikin/Cours/IFT359
[Lip11]
LIPOVAČA M.
Learn You a Haskell for Great Good,
No Starch Press, 2011.
http://learnyouahaskell.com/ (http://lyah.haskell.fr/)
[SGS08]
O'SULLIVAN B., GOERZEN J. et STEWART D.,
Real World Haskell,
O’Reilly, 2008.
http://book.realworldhaskell.org/
[UdS1]
Université de Sherbrooke
Politique d’évaluation des apprentissages
disponible via www.usherbrooke.ca/accueil/fr/direction/documents-officiels/politiques/
[UdS2]
Université de Sherbrooke
Règlement des études
disponible via www.usherbrooke.ca/accueil/fr/direction/documents-officiels/reglements/
30-04-2013
4
L’intégrité intellectuelle passe, notamment,
par la reconnaissance des sources utilisées.
À l’Université de Sherbrooke, on y veille!
Extrait du Règlement des études
8.1.2 Relativement aux activités pédagogiques
L'expression délit désigne d'abord tout acte ou toute manœuvre visant à tromper quant au rendement scolaire ou
quant à la réussite d'une exigence relative à une activité pédagogique.
Sans restreindre la portée générale de ce qui précède, est considéré comme un délit :
a) la substitution de personnes ou l’usurpation d’identité lors d'une activité évaluée ou obligatoire;
b) le plagiat, soit le fait, dans une activité évaluée, de faire passer indûment pour siens des passages ou des
idées tirés de l'œuvre d'autrui;
c) l'obtention par vol ou par toute autre manœuvre frauduleuse de document ou de matériel, la possession
ou l'utilisation de tout matériel non autorisé avant ou pendant un examen ou un travail faisant l'objet
d'une évaluation;
d) le fait de fournir ou d'obtenir toute aide non autorisée, qu'elle soit collective ou individuelle, pour un
examen ou un travail faisant l'objet d'une évaluation;
e) le fait de soumettre, sans autorisation préalable, une même production comme travail à une deuxième
activité pédagogique;
f) la falsification d'un document aux fins d'obtenir une évaluation supérieure dans une activité ou pour
l'admission à un programme.
Par plagiat, on entend notamment :
 Copier intégralement une phrase ou un passage d’un livre, d’un article de journal ou de revue, d’une page
Web ou de tout autre document en omettant d’en mentionner la source ou de le mettre entre guillemets
 Reproduire des présentations, des dessins, des photographies, des graphiques, des données… sans en
préciser la provenance et, dans certains cas, sans en avoir obtenu la permission de reproduire
 Utiliser, en tout ou en partie, du matériel sonore, graphique ou visuel, des pages Internet, du code de
programme informatique ou des éléments de logiciel, des données ou résultats d’expérimentation ou
toute autre information en provenance d’autrui en le faisant passer pour sien ou sans en citer les sources
 Résumer ou paraphraser l’idée d’un auteur sans en indiquer la source
 Traduire en partie ou en totalité un texte en omettant d’en mentionner la source ou de le mettre entre
guillemets
 Utiliser le travail d’un autre et le présenter comme sien (et ce, même si cette personne a donné son
accord)
 Acheter un travail sur le Web ou ailleurs et le faire passer pour sien
 Utiliser sans autorisation le même travail pour deux activités différentes (autoplagiat)
Autrement dit : mentionnez vos sources.
Document informatif V.2 (juin 2012)
Groupe de travail anti-plagiat
Téléchargement