Callcc/Guyslain/Teaching/ProgFonc/index

Version & licenses
Creative Commons License
  1. {`author "Guyslain Naves"}
  2. {`windowtitle "Programmation fonctionnelle, SIN6U9C"}
  3. {`frametitle "Programmation Fonctionnelle, L3 Saint Charles"}
  4. {`menu "progfonc"}
  5. {`leftpicture af://guyslain/images/Teaching/ProgFonc/OCaml_Sticker.svg}


  6. {link af://callcc/Guyslain/Teaching/ProgFonc/Cours/sommaire Le cours.}


  7. {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/examen2018 L'examen 2018.}
  8. {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/examen2018_correction Correction de l'examen 2018.}

  9. {link https://gitlab.lis-lab.fr/guyslain.naves/FunctionalProgrammingLabs Corrections des TP.}

  10. {section 3 TD}

  11. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/TD1 TD 1} :
  12. Variables et fonctions.
  13. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/TD2 TD 2} :
  14. Types paramétrés I.
  15. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/TD3 TD 3} :
  16. Types paramétrés II.
  17. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/TD4 TD 4} :
  18. Listes.
  19. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/TD5 TD 5} :
  20. Types algébriques I.
  21. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/TD6 TD 6} :
  22. Types algébriques II.
  23. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/TD7 TD 7} :
  24. Yojson, Dictionnaires.
  25. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/TD8 TD 8} :
  26. Modules et foncteurs.
  27. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2018/TD9 TD 9} :
  28. Boucles fonctionnelles.
  29. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/examen2017 TD 10} :
  30. Examen 2017. {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/solution_examen2017 Son corrigé.}

  31. {section 3 TP}

  32. - {link
  33. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp1-lego
  34. TP 1} : Prise en main de l'environnement.
  35. - {link
  36. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp2-satellite
  37. TP 2} : Mise en orbite !
  38. - {link
  39. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp3-corriger-le-code-pour-Mandelbrot
  40. TP 3} : Fractale de Mandelbrot.
  41. - {link
  42. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp4-script-de-recensement-de-fichiers-sources
  43. TP 4} : Script parcourant un système de fichiers.
  44. - {link
  45. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp5-dessin-d-arbre-binaire
  46. TP 5} : Dessins d'arbres binaires.
  47. - {link
  48. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp6-algorithme-de-reingold-tilford
  49. TP 6} : Algorithme de Reingold-Tilford.
  50. - {link
  51. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp7-utiliser-openstreetmap
  52. TP 7} : Manipuler des données d'OpenStreetMap.
  53. - {link
  54. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp8-le-compte-est-bon
  55. TP 8} : Le compte est bon.
  56. - {link
  57. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp9-machines-de-Turing
  58. TP 9} : Évaluation paresseuse et machines de Turing.
  59. - {link
  60. af://callcc/Guyslain/Teaching/ProgFonc/TP2018/tp10-java
  61. TP 10} : Programmation fonctionnelle en Java.



  62. {section 3 Aides}

  63. Pour l'environnement de développement :
  64. - {link af://callcc/Guyslain/Teaching/ProgFonc/installer-ocaml Comment installer Ocaml} sur votre ordinateur personnel, en utilisant Opam.
  65. - {link af://callcc/Guyslain/Teaching/ProgFonc/utiliser-emacs Quelques bases pour utiliser Emacs} pour programmer en Ocaml.
  66. - {link af://callcc/Guyslain/Teaching/ProgFonc/utiliser-atom Quelques bases pour utiliser Atom} pour programmer en Ocaml.
  67. - {link af://callcc/Guyslain/Teaching/ProgFonc/utiliser-vscode Quelques bases pour utiliser Visual Studio Code} pour programmer en Ocaml.
  68. - {link af://callcc/Guyslain/Teaching/ProgFonc/utiliser-ocaide Eclipse possède un très bon plugin pour Ocaml}, voici comment l'installer et commencer à l'utiliser.
  69. - Si vous ne pouvez rien installer sur votre machine, vous pouvez utiliser un interpréteur en Javascript dans votre navigateur. {link af://callcc/Guyslain/Teaching/ProgFonc/utiliser-jsootop Voici comment.} Ce ne sera certainement pas suffisant, puisqu'on ne maitrise pas les paquets installés.


  70. Pour programmer en Ocaml :
  71. - {link af://callcc/Guyslain/Teaching/ProgFonc/elements-de-syntaxe Quelques éléments de syntaxe} pour bien se lancer dans la programmation en Ocaml. Utile dès le premier TP.
  72. - {link af://callcc/Guyslain/Teaching/ProgFonc/elements-de-liste Quelques éléments de manipulation de listes}, en particulier les fonctionnelles.



  73. {section 2 Archive année 2017}

  74. {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/examen2017 L'examen d'avril 2017.}


  75. {section 3 TD}

  76. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD1 TD 1} :
  77. Variables et fonctions.
  78. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD2 TD 2} :
  79. Types paramétrés I.
  80. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD3 TD 3} :
  81. Types paramétrés II.
  82. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD4 TD 4} :
  83. Listes.
  84. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD5 TD 5} :
  85. Types algébriques I.
  86. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD6 TD 6} :
  87. Types algébriques II.
  88. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD7 TD 7} :
  89. Yojson, Dictionnaires.
  90. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD8 TD 8} :
  91. Modules et foncteurs.
  92. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD9 TD 9} :
  93. Boucles fonctionnelles.
  94. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2017/TD10 TD 10} :
  95. Révisions.

  96. {section 3 TP}

  97. - {link
  98. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp1-faire-pousser-des-arbres
  99. TP 1} : Prise en main de l'environnement.
  100. - {link
  101. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp2-satellite
  102. TP 2} : Mise en orbite !
  103. - {link
  104. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp3-corriger-le-code-pour-Mandelbrot
  105. TP 3} : Fractale de Mandelbrot.
  106. - {link
  107. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp4-script-de-recensement-de-fichiers-sources
  108. TP 4} : Script parcourant un système de fichiers.
  109. - {link
  110. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp5-dessin-d-arbre-binaire
  111. TP 5} : Dessins d'arbres binaires.
  112. - {link
  113. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp6-algorithme-de-reingold-tilford
  114. TP 6} : Algorithme de Reingold-Tilford.
  115. - {link
  116. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp7-utiliser-openstreetmap
  117. TP 7} : Utiliser des données d'OpenStreetMap.
  118. - {link
  119. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp8-machines-de-Turing
  120. TP 8} : Évaluation paresseuse et machines de Turing.
  121. - {link
  122. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp9-le-compte-est-bon
  123. TP 9} : Le compte est bon.
  124. - {link
  125. af://callcc/Guyslain/Teaching/ProgFonc/TP2017/tp10-java
  126. TP 10} : Programmation fonctionnelle en Java.




  127. {section 2 Archive année 2016}


  128. {section 3 TD}


  129. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TD1 TD 1} : Découverte d'Ocaml.
  130. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TD2 TD 2} : Substitutions.
  131. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TD3 TD 3} : Listes.
  132. - TD 4 : On continue les listes, avec les versions fonctionnelles.
  133. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TD5 TD 5} : Types algébriques.
  134. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TD6 TD 6} : Modules, algorithmique.
  135. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TD7 TD 7} : Utilisation de la librairie standard.
  136. - TD 8 : Préparation du projet.

  137. {section 3 TP}

  138. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TP1 TP 1} : Ensemble de Mandelbrot.
  139. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TP2 TP 2} : Problème des $n$ reines.
  140. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TP3-timsort TP 3} : Timsort.
  141. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TP4-enigme TP 4} : Une énigme mathématique.
  142. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TP5-reingold-tilford TP 5} : L'algorithme de Reingold et Tilford
  143. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TP6-le-compte-est-bon TP 6} : Le compte est bon.
  144. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/TP7-zipper-list-TM TP 7} : Zippers et machines de Turing.

  145. {section 3 Projet}

  146. Le projet de cette année consiste à l'implémentation d'un algorithme,
  147. chaque groupe travaillant sur un algorithme différent. Chaque
  148. algorithme sera décrit dans une monade permettant de représenter les
  149. principales étapes du calcul et de produire une sortie sous la forme
  150. de dessins. On pourra ensuite utiliser une console (qui est fournie)
  151. pour contrôler l'exécution de l'algorithme avec un affichage du
  152. résultat dans une page html.

  153. Voici {link http://pageperso.lif.univ-mrs.fr/~guyslain.naves/ un
  154. exemple avec un tas gauche.}

  155. La principale difficulté à laquelle s'attendre est de s'approprier les
  156. différentes librairies fournies (à récupérer sur Ametice) pour les
  157. utiliser correctement. Il s'agit finalement d'une des principales
  158. compétences pour un développeur : être capable d'utiliser des
  159. libraires externes. Par ailleurs, les interfaces des librairies
  160. fournies sont typiques de programmes fonctionnels, bien les manipuler
  161. est donc un bon exercice de programmation fonctionnelle.

  162. Le projet et son infrastructure seront présentés pendant le cours 8.


  163. {section 3 Examen}

  164. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2016/examen Le sujet
  165. d'examen de première session.}


  166. {section 2 Archive année 2015}

  167. {section 3 TD}

  168. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TD1-2015 TD 1} : Découverte d'Ocaml.
  169. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TD2-2015 TD 2} : Substitutions.
  170. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TD3-2015 TD 3} : Manipulation de listes.
  171. - TD 4 : on continue le sujet sur les manipulations de listes.
  172. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TD4-2015 TD 5} : Types algébriques.
  173. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TD6-2015 TD 6} : Un peu d'algorithmique.
  174. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TD7-2015 TD 7} : Utilisation de la librairie standard.

  175. {section 3 TP}

  176. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TP1-2015 TP 1} : Ensemble de Mandelbrot.
  177. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TP2-2015 TP 2} : Problème des $n$-reines.
  178. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TP3-2015 TP 3} : Énigme mathématique.
  179. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TP4-2015 TP 4} : Des listes infinies !
  180. - TP 5 : suite des listes infinies, rubans et automates cellulaires.
  181. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TP6-2015 TP 6} : Spirales.
  182. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2015/TP7-2015 TP 7} : Le compte est bon.

  183. {section 3 Projet 2015}

  184. - Chamortue, une tortue Logo en Ocaml : {link af://callcc/Guyslain/Teaching/ProgFonc/chamortue C'est ici!}

  185. {section 3 Examen 2015}

  186. - {link af://callcc/Guyslain/Teaching/ProgFonc/examen2015 1{^ère} session.}

  187. {section 2 Archive année 2014}

  188. {section 3 TD}

  189. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TD1-2014 TD 1} : Découverte d'Ocaml.
  190. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TD2-2014 TD 2} : Substitution.
  191. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TD3-2014 TD 3} : Manipulation de listes.
  192. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TD4-2014 TD 4} : Types algébriques.
  193. - TD 5 : On rattrape le retard.
  194. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TD6-2014 TD 6} : Modules et Foncteurs.
  195. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TD7-2014 TD 7} : Librairie standard.
  196. - TD 8 : Encore une séance de rattrapage.

  197. {section 3 TP}

  198. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TP1-2014 TP 1} : Ensemble de Mandelbrot.
  199. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TP2-2014 TP 2} : Problème des N-reines.
  200. - le TP 3 est annulé, il sera rattrapé plus tard.
  201. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TP4-2014 TP 4} : Une énigme mathématique.
  202. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TP5-2014 TP 5} : Listes infinies.
  203. - TP 6 : Fin du TP précédent, en particulier la partie sur les automates cellulaires.
  204. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TP7-2014 TP 7} : Le compte est bon.
  205. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TP8-2014 TP 8} : Combinateurs de parsing.


  206. {section 3 Projet}

  207. {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/projet-2014 Projet :} Interprèteur fonctionnel.

  208. {section 3 Examen}

  209. - {link af://callcc/Guyslain/Teaching/ProgFonc/examen2014 L'examen et son corrigé.}
  210. - {link af://callcc/Guyslain/Teaching/ProgFonc/examen2014-rattrapage L'examen de 2e session et son corrigé.}

  211. {section 2 Archive année 2013}


  212. {section 3 TD}
  213. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2013/TD1-2013 TD 1} : Variables et $\beta$-réduction.
  214. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2013/TD2-2013 TD 2} : Fonctionnelles et typage.
  215. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2013/TD3-2013 TD 3} : Manipulation de listes.
  216. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2013/TD4-2013 TD 4} : Types paramêtrés et modules.

  217. {section 3 TP}
  218. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2014/TP1-2014 TP 1} : Ensemble de Mandelbrot.
  219. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2013/TP2-2013 TP 2} : Petite énigme mathématique.
  220. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2013/TP3-2013 TP 3} : Compression LZW.
  221. - {link af://callcc/Guyslain/Teaching/ProgFonc/TP2013/TP4-2013 TP 4} : Le compte est bon.

  222. {section 3 Projet}

  223. - {link af://callcc/Guyslain/Teaching/ProgFonc/projet Problème des $n$-corps.}

  224. {section 3 Examen}

  225. - {link af://callcc/Guyslain/Teaching/ProgFonc/examen2013 L'examen 2013 et son corrigé}