Pourquoi suivre ce MOOC ?
Si vous savez déjà programmer, allez, un peu plus bas, à la section ainsi intitulée. Si, par contre, vous débutez l'informatique, vous apprécierez ce cours pour de multiples raisons:
- Il a été dispensé 14 ans à l'UPMC en premier cours de premier semestre de première année pour les étudiants en informatique (et en mathématiques) et chaque fois à plus de 500 étudiants. C'est donc un cours rôdé qui s'adresse tant aux femmes qu'aux hommes désireux de saisir ce que peut être la science informatique.
- La récursion est un mode de pensée, propre à l'informatique, s'apparentant à la récurrence mais visant la construction d'une solution à un problème plutôt que l'établissement d'une propriété. Ce cours vous exerce à acquérir ce nouveau mode de pensée.
- La récursion porte à la fois sur les algorithmes et sur les données. Les données récursives sont les listes et les arbres: deux structures de données fondamentales en informatique que l'on retrouve partout: listes d'amis, domaines Internet, etc. Tous les exercices (à correction automatisée) proposés dans ce MOOC vous entraineront à manipuler ces types de données.
- Avec ce MOOC, vous trouverez aussi des documents, des références vous permettant d'aller encore plus loin et d'aborder sereinement d'autres MOOC d'informatique.
Vous savez déjà programmer ?
La récursion n'est pas un épiphénomène mentionné au détour d'un cours comme quoi le langage X permet aussi d'écrire des fonctions récursives! Voici pourquoi suivre ce MOOC même si vous savez déjà programmer:
- La récursion est un mode de pensée fondamental et spécifique à l'informatique qui a des implications tant sur les algorithmes que sur les structures de données. Maîtriser la récursion c'est comprendre les phénomènes purs sans être encombré par les tracas d'une programmation basée sur l'itération.
- Listes et arbres sont parmi les structures de données les plus utiles en informatique que ce MOOC explore en tous sens. Et c'est beaucoup plus drôle que de manipuler des vecteurs ou des matrices de nombres!
- Le langage utilisé pour ce faire est Scheme, un dérivé (né en 1975 et normalisé IEEE et ISO) du fameux langage Lisp, le second plus ancien langage (après Fortran) inventé en 1958. Doté d'une syntaxe minimale et de seulement cinq mots-clés, la connaissance de Scheme est une marque distinctive sur un CV.
- Connaître un langage de plus permet d'augmenter son arsenal de techniques programmatoires et ainsi, dans d'autres langages tels que Java, Python ou C, d'imaginer de nouvelles façons de programmer. Le dialecte Scheme, enseigné dans ce MOOC, est un langage fonctionnel pur sans affectation. Tous traits que l'on retrouve, par exemple, en Caml mais aussi dans le très récent Clojure conçu pour faciliter l'écriture de programmes concurrents. Parmi les langages proches citons Javascript ou, dans un autre genre, XSLT.
- Enfin, récursion, arbre et liste suffisent à expliquer, lors du dernier cours, le processus d'évaluation c'est-à-dire comment une machine peut, partant d'un texte représentant un programme, obtenir sa valeur c'est-à-dire ce que ce texte calcule. Scheme est le seul langage permettant cela dans un volume raisonnable: quelques centaines de lignes suffisent pour définir un interprète Scheme en Scheme!