Plan de co
u
30-04-2013
D
Ensei
g
na
n
Horaire
Descripti
o
Objectifs
Contenu
Crédits
Organisati
Antérieur
e
1
http://w
w
u
rs
épartement d’
i
n
t Benoît
Courri
e
Local :
Téléph
o
Site :
Dispo
n
Jeudi
Vendr
e
o
n officielle d
e
Forma
l
p
rogra
m
Qualit
é
listes,
s
à des a
l
solutio
n
3
on 3 heur
e
1 heur
e
5 heur
e
IFT 15
9
w
w.usherbrooke.c
a
I
i
nformatique
Pr
o
Fraikin
e
l : Beno
i
D4-2
0
o
ne : (819)
http:/
/
n
ibilité : à dét
e
15h30 à 1
7
e
di 10h30 à 1
2
e
l'activité pé
d
iser les notion
s
m
mation fonct
i
é
, modularité,
c
s
élection, abstr
a
l
gorithmes spé
n
.
Introductio
n
e
s d’exposé m
a
e
d’exercices p
a
e
s de travail pe
r
9
a
/fiches-cours/ift3
5
I
FT 359 – Pro
g
I
F
o
gramm
a
P
l
i
t.Fraikin@U
S
0
09
821-8000 pos
t
/
p
ages.usherbr
e
rminer, à véri
f
7
h20, salle de
c
2
h20, laboratoi
r
d
a
g
o
g
ique
1
s
d'abstraction
i
onnelle.
c
onception fon
c
a
ction d'ordre
cifiques et au
x
n
à la preuve d
e
a
gistral par se
m
a
r semaine
r
sonnel par se
m
5
9
g
rammation fo
n
F
T 359
a
tion fon
c
l
an de cours
Été 2013
S
herbrooke.ca
t
e 62013
ooke.ca/
b
frai
k
f
ier par courri
e
ours D4-2021
r
e D4-1017
procédurale e
t
c
tionnelle. Pr
o
supérieur. Ab
s
x
structures de
e
programme.
m
aine
m
aine
n
ctionnelle
c
tionnell
k
in/Cours/IFT3
e
l
t
d'abstraction
o
cessus récursi
f
s
traction à
l'ai
d
données asso
c
e
59
de données da
n
f
s et itératifs.
O
d
e de flots. Ex
e
c
iées. Insistanc
É
t
n
s le cadre de
O
bjets atomiq
u
e
mples faisant
e sur la qualit
é
t
é 2013
1
la
u
es,
appel
é
de la
Plan de cours IFT 359 – Programmation fonctionnelle Été 2013
30-04-2013 2
1 Présentation
1.1 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 program-
mation 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 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
Plan de cours IFT 359 – Programmation fonctionnelle Été 2013
30-04-2013 3
2 Organisation
2.1 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 Travaux
2 mai Lecture du plan de cours et introduction 0
3 mai laboratoire 1
9 mai cours 2
10 mai laboratoire 2 Devoir 1
14 mai 2 cours 2 3
16 mai cours 3
17 mai 1 laboratoire 1 4
21 mai 2 cours 2 4 Devoir 2
23 mai cours 5
24 mai laboratoire 4-5
30 mai cours 5
31 mai laboratoire 4-5-6 Devoir 3
6 juin cours 6
7 juin laboratoire 4-5-6
13 juin cours 6
14 juin laboratoire 6 Devoir 4
15 au 22 juin 3 Examen périodique 3
27 juin pas d’activité
28 juin pas d’activité
4 juillet cours 6
5 juillet laboratoire 4-5-6 Devoir 5
11 juillet cours 7
12 juillet laboratoire 7
18 juillet cours 7
19 juillet laboratoire 8 Devoir 6
25 juillet cours 8
26 juillet laboratoire 8/9
1 août cours 9
2 août laboratoire 9 Devoir 7
6 au 16 août 3 Examen final 3
1 Il y a laboratoire le vendredi 17 mai (Festival des harmonies).
2 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.
Plan de cours IFT 359 – Programmation fonctionnelle Été 2013
30-04-2013 4
3 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/
Document informatif V.2 (juin 2012) Groupe de travail anti-plagiat
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.
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !