Ma contribution majeure en matière d'introduction à la programmation est sans doute la plate-forme pédagogique Programmer's Learning Machine, que j'ai réalisé avec Gérald Oster. Il s'agit d'un outil interactif permettant d'apprendre les bases de la programmation en Java, python ou scala de façon interactive. Cet outil constitue la colonne vertébrale du module Preparation Informatique à l'ESIAL, destiné aux étudiants venant des classes préparatoires pour leur permettre de combler certaines de leurs lacunes en programmation de base. A la fin du module, les étudiants doivent savoir utiliser l'environnement UNIX utilisé à l'ESIAL, et écrire des méthodes simples (comme la recherche linéaire d'un élément dans un tableau).
Je participe également au module Programmation Orientée Objet, dont Gérald Oster est le responsable. Il s'agit de construire sur les bases acquises dans le module de préparation informatique (ou ailleurs), et d'étudier les concepts de la programmation objet.
Le module Techniques et Outils pour Programmer (dont je suis responsable) arrive après celui de POO. L'objectif est de permettre aux étudiants de devenir de vrais programmeurs en renforçant leurs compétances à la fois sur des techniques algorithmiques importantes comme la récursivité, sur des notions de base (efficacité et correction d'un programme) et sur les outils classiques (debogueur, profiler). L'objectif est d'avoir un point de vue à la fois théorique et pratique (preuve de programme vs. deboguage ou complexité algorithmique vs. profiling).
Le cursus ESIAL contient ensuite un module de Structures de Données (sous la responsabilité de Rémi Badonnel) auquel je ne participe pas.
Le module Langage C et Shell (dont je suis responsable) arrive ensuite. Il constitue à la fois une extension aux modules de programmation vus plus tôt lors de la première année et une introduction aux cours de programmation système et systèmes d'exploitation dont je suis responsable en seconde année. L'objectif est de permettre aux étudiants de devenir des utilisateurs experts d'UNIX (scripting shell), et de leur permettre de survivre en C (bases du langage, gestion de la mémoire, notions de compilation, techniques de debug spécifiques au C). La spécificité de ce module est d'être organisé majoritairement sous forme de TD-cours (un seul amphi d'introduction et de mise en contexte, le plus gros du contenu à savoir est donné en petits groupes juste avant les exercices). Les seuls supports de cours disponibles ici sont donc le poly de l'amphi d'intro, et les sujets de TP.
Bibliographie succincte. Si vous avez des suggestions pour compléter cette partie, elles sont les bienvenues.
- Pense-bête Emacs et Unix.
- Quelques conseils de programmation à ne pas suivre (EN).