Version sans JavaScript, en lecture seule : les ateliers, les quiz et l’exécution du code n’y sont pas. Version complète · Catalogue · Se connecter

Langue
Français · English

Cours de Philippe Roussille

Cours

Programmation professionnelle

3iL Ingénieurs · Rodez · 3iL I2 · section par apprentissage (promo 24) · septembre → novembre 2026 · FR · EN · accès réservé

Architecture logicielle, exceptions, patrons de conception. Treize notions certifiées sur papier, un projet évalué avec l'assistant autorisé.

Java, avant la rentrée

3iL Ingénieurs · Rodez · 3iL 1A · FR · EN

Le cours Java de pré-rentrée : chapitres, exercices auto-corrigés et projets, avec un vrai compilateur Java dans le navigateur. Un test de positionnement dit par où commencer.

Conception orientée objet

3iL Ingénieurs · Rodez · 3iL Ing I1 - Apprentissage · FR · EN · accès réservé

Java objet en profondeur : classes et objets, héritage, interfaces, généricité, collections et streams.

Fondamentaux du développeur

3iL Ingénieurs · Rodez · 3iL 1A · FR · EN · accès réservé

Les outils et les réflexes du métier : terminal, Git, refactoring, programmation défensive, débogage, tests et documentation.

UML

3iL Ingénieurs · Rodez · 3iL 1A · FR · EN · accès réservé

Modéliser un logiciel : besoins et cas d'utilisation, comportement dynamique, structure du projet.

Méthodes de travail

3iL Ingénieurs · Rodez · 3iL 1A · FR · EN · accès réservé

Apprendre, rédiger, survivre en ligne de commande.

Prompt engineering

3iL Ingénieurs · Rodez · 3iL 1A · FR · EN · accès réservé

Écrire pour un modèle de langage, et ce que cela engage.

Initiation à la recherche

3iL Ingénieurs · Rodez · 3iL 2A · FR · EN · accès réservé

Faire un état de l'art : trouver, trier, lire et citer des articles, avec Zotero et LaTeX. S8 SI 3490.

Anciens cours

Programmation fonctionnelle en Caml

EPITA · Toulouse · 1re année (cycle préparatoire) · FR · EN

Un séminaire d'algorithmique en Caml pour débuter la programmation : définitions, types, fonctions, analyse par cas, aspects impératifs et récursivité.

Théorie des langages rationnels

EPITA · Toulouse · 2e année (cycle préparatoire) · FR · EN

Mots et langages, expressions rationnelles, automates finis ; compiler une expression en automate déterministe et retour, propriétés de clôture, minimisation, et ce que les automates ne savent pas faire.

Programmation en C

EPITA · Toulouse · 2e année (cycle préparatoire) · FR · EN

Le C et son environnement Unix : compiler, pointeurs et tableaux, organisation de la mémoire, structures de données, entrées-sorties, processus, et la programmation concurrente avec les threads POSIX.

Logique pour l'informatique

Université Paul Sabatier · Toulouse · L2 Informatique · FR · EN

Calcul propositionnel et logique du premier ordre : lire, évaluer, transformer et démontrer des formules, et modéliser un problème pour le faire résoudre.

Assembleur 68000

Université Paul Sabatier · Toulouse · L1 Informatique · FR · EN

Programmer le processeur Motorola 68000 au plus près de la machine : représenter les nombres, manipuler registres et mémoire, écrire tests, boucles et sous-programmes.

Ma méthode : comment j'organise mes cours

Cette page décrit comment mes cours sont organisés, et pourquoi. Je l'ai écrite pour mes étudiants, qui ont le droit de savoir comment on les évalue, et pour les collègues qui se posent les mêmes questions que moi.

D'où je pars

Un assistant de code produit aujourd'hui en quelques minutes un projet d'étudiant complet, avec sa documentation et ses diagrammes. Un projet rendu ne me dit donc plus grand-chose sur la personne qui le rend. Je ne le vois pas comme de la triche. Quand le projet compte beaucoup dans la note et qu'un outil sait le faire, s'en servir est un choix raisonnable. Et l'interdire n'aurait pas de sens : je ne pourrais pas le vérifier en dehors de la salle, et mes étudiants sont des apprentis qui utilisent ces outils en entreprise.

Le problème existait avant les assistants. En 2021, Lehtinen, Lukkarinen et Haaranen montraient déjà qu'une part importante des étudiants d'un cours d'introduction n'arrivaient pas à expliquer le code qu'ils avaient eux-mêmes rendu. Les assistants ont surtout rendu la situation beaucoup plus fréquente.

Deux évaluations séparées

Dans une matière d'ingénieur comme celles que j'enseigne, il y a deux choses à évaluer, et elles ne s'évaluent pas de la même façon.

La première est le jugement : lire du code, voir ce qui ne va pas, décider où intervenir, justifier un choix de conception, estimer ce qu'un changement va coûter. L'assistant ne le fait pas à la place de l'étudiant. La seconde est la capacité à construire quelque chose de conséquent avec les outils actuels, assistant compris, sans perdre la main sur ce qui est produit.

La seconde dépend de la première. Quelqu'un qui ne sait pas lire le code que l'assistant lui propose ne peut pas le vérifier. Plusieurs études vont dans ce sens. Bastani et ses collègues (2025) ont suivi des lycéens en mathématiques : avec un accès libre à un assistant, leurs résultats progressaient pendant l'entraînement, puis baissaient à l'examen, une fois l'accès retiré. Une version de l'assistant qui donnait des indices plutôt que des réponses évitait cette baisse. Chez des programmeurs débutants, Prather et al. (2024) et Kazemitabaar et al. (2023) observent que l'assistant profite surtout à ceux qui ont déjà des bases, et qu'il entretient chez les autres des idées fausses sur le fonctionnement du code.

J'ai donc deux évaluations, que j'appelle avec mes étudiants le permis et la conduite.

  • Le permis est une épreuve individuelle, sur papier ou hors ligne, sans IA. Il faut y lire du code, trouver ce qui ne va pas, le modifier et justifier ses choix.
  • La conduite est le projet. L'assistant y est autorisé, et même attendu. J'y regarde si l'étudiant sait cadrer ce qu'il demande, vérifier ce qu'il obtient, assembler le travail de plusieurs personnes dans un code cohérent, et expliquer n'importe quelle ligne.

La note de projet est pondérée par celle de l'épreuve : sans le permis, la conduite ne compte pas pleinement.

Je ne suis pas le seul à séparer les choses ainsi. L'Université de Sydney distingue une évaluation surveillée et une évaluation ouverte, et l'AI Assessment Scale (Perkins, Furze, Roe et MacVaugh, 2024) propose des niveaux d'usage autorisé de l'IA selon l'évaluation. Bearman et ses collègues (2024) appellent jugement évaluatif la capacité à juger de la qualité d'un travail, le sien comme celui d'un outil. C'est ce que vise la seconde évaluation.

Ce que j'ai abandonné

Je ne fais plus de cours magistral en amphi, ni de TP guidé pas à pas avec un squelette à compléter. Le cours magistral transmet des informations qu'on trouve aujourd'hui partout. Le TP guidé se termine en trente secondes avec un assistant, et il ne demandait déjà aucune décision.

En séance, je garde trois choses : des explications courtes, données au moment où elles servent ; des exercices qui partent d'un problème et obligent à choisir ; et mes retours sur ce que les étudiants produisent. La méta-analyse de Freeman et al. (2014), sur 225 études, trouve qu'en faisant travailler les étudiants pendant la séance plutôt qu'en les faisant écouter, les résultats progressent d'environ un demi écart-type, et le taux d'échec passe de 34 % à 22 %.

Comment se déroule une séquence

Chaque cours est découpé en séquences de 45 minutes, avec une notion par séquence, deux au plus. Une séquence suit toujours le même ordre :

  1. une situation de départ, sur du code existant : un bug, un audit, une demande de modification ;
  2. une explication de cinq à sept minutes, faite en direct sur ce code ;
  3. une pause, où chacun choisit un exercice parmi trois niveaux ;
  4. un exercice de base, vérifié par des tests ;
  5. un exercice d'approfondissement, pour ceux qui ont fini ;
  6. une courte question de sortie.

Entre les séances, il y a un chapitre à lire, parfois une vidéo de six minutes au plus suivie d'une question, et un quiz.

Cet ordre (prédire, exécuter, examiner, modifier, puis créer) vient de la méthode PRIMM (Sentance, Waite et Kallia, 2019). Elle s'appuie sur un constat : savoir suivre et expliquer du code vient avant savoir en écrire, et les deux vont de pair (Lopez et al., 2008 ; Xie et al., 2019). C'est pour cela que mes exercices partent presque toujours d'un code qui existe déjà. C'est aussi le terrain où l'assistant aide le moins, et en entreprise, on passe bien plus de temps à modifier du code qu'à en écrire.

Trois niveaux, au choix

Après chaque explication, je laisse quatre minutes et trois exercices sur la même idée. Le niveau 1 refait ce qui vient d'être montré, avec l'exemple sous les yeux. Le niveau 2 correspond à ce qu'il faut savoir faire à l'épreuve. Le niveau 3 est une question plus ouverte, pour ceux qui veulent creuser. Chacun choisit son niveau à chaque pause, et peut en changer à la suivante. Il n'y a pas de groupes de niveau.

L'exercice de base propose des indices gradués, qu'on peut ouvrir sans pénalité. Au-delà, l'exercice d'approfondissement se fait sans aide. Deux résultats justifient ce choix. Pour des débutants, les explications explicites et les exemples résolus marchent mieux que la découverte libre (Kirschner, Sweller et Clark, 2006 ; l'article est discuté, mais il tient sur ce point). Et ce qui aide un débutant peut gêner quelqu'un de plus avancé (Kalyuga et al., 2003).

Les votes en séance

Chaque explication commence par une question : que va faire ce code ? Tout le monde vote. Quand la salle se partage, entre 30 et 70 % de bonnes réponses, chacun discute deux minutes avec son voisin, puis on revote. En informatique, Porter, Bailey Lee et Simon (2013) rapportent que cette méthode a fait passer le taux d'échec de 20 % à 7 % sur dix ans de cours. Porter et al. (2011) ont aussi vérifié que les étudiants apprennent réellement pendant la discussion, et qu'ils ne se contentent pas de reprendre la réponse du voisin.

Entre les séances

Mes étudiants sont en alternance et passent plusieurs semaines en entreprise entre deux séances. Pour ces périodes, je donne une feuille de route avec des échéances datées. À chaque échéance, un quiz se ferme, et 40 % de ses questions reviennent sur les notions ratées aux quiz précédents. C'est la partie la mieux étayée de tout le dispositif : se tester aide davantage à retenir que relire (Roediger et Karpicke, 2006 ; Adesope, Trevisan et Sundararajan, 2017, une méta-analyse de 217 études).

L'épreuve

L'épreuve pose huit à douze questions approfondies plutôt que trente questions courtes. Chacune donne du code, et demande d'y trouver un défaut, de proposer une modification et de la justifier. L'une porte sur du code produit par un assistant, dans lequel j'ai glissé des erreurs, parce que relire ce code fait désormais partie du métier. Une autre porte sur le domaine du projet : l'étudiant qui a compris son projet y est avantagé, celui qui l'a entièrement délégué ne l'est pas.

Une mise en garde

Deslauriers et ses collègues (2019) ont comparé, en physique, un cours magistral et un cours où les étudiants travaillent en séance. Les seconds apprenaient davantage, mais avaient l'impression d'apprendre moins. Il est probable que mon cours donne la même impression à mes étudiants. Je le leur dis dès la première séance.

Ce qui n'est pas démontré

Deux de mes choix ne reposent, à ma connaissance, sur aucune étude publiée : la pondération de la note de projet par celle de l'épreuve, et l'épreuve où chaque étudiant modifie son propre dépôt, hors ligne et en temps limité. Ce sont des paris, qui me semblent cohérents avec le reste. Je recueille des données sur ce cours, de façon anonyme et avec l'accord des étudiants, et je publierai ce qu'elles montrent, même si elles me donnent tort.

Plusieurs des études citées portent sur d'autres publics que le mien : des lycéens, des étudiants en physique, des collégiens. Leurs résultats ne s'appliquent pas forcément tels quels à des apprentis ingénieurs. Le tableau ci-dessous indique la limite de chacune.

Références

RéférenceCe qu'elle établitLimite
Adesope, O. O., Trevisan, D. A. et Sundararajan, N. (2017). Rethinking the use of tests: A meta-analysis of practice testing. Review of Educational Research, 87(3). doi:10.3102/0034654316689306Se tester consolide la mémorisation, en laboratoire et en classePsychologie générale
Bastani, H. et al. (2025). Generative AI without guardrails can harm learning. PNAS, 122(26). doi:10.1073/pnas.2422633122L'accès libre à un assistant dégrade la performance une fois l'accès retiré ; des garde-fous la préserventLycéens, mathématiques
Bearman, M. et al. (2024). Developing evaluative judgement for a time of generative artificial intelligence. Assessment & Evaluation in Higher Education, 49(6). doi:10.1080/02602938.2024.2335321Le jugement évaluatif comme acquis centralCadre conceptuel
Deslauriers, L. et al. (2019). Measuring actual learning versus feeling of learning. PNAS, 116(39). doi:10.1073/pnas.1821936116En pédagogie active on apprend plus en ayant l'impression d'apprendre moinsPhysique, un établissement
Freeman, S. et al. (2014). Active learning increases student performance in science, engineering, and mathematics. PNAS, 111(23). doi:10.1073/pnas.1319030111Gain de 0,47 écart-type, échec de 34 % à 22 %Instructeurs volontaires
Kalyuga, S., Ayres, P., Chandler, P. et Sweller, J. (2003). The expertise reversal effect. Educational Psychologist, 38(1)Ce qui aide un novice gêne un avancéTâches de laboratoire
Kazemitabaar, M. et al. (2023). Studying the effect of AI code generators on supporting novice learners. CHI '23. doi:10.1145/3544548.3580919Les mieux préparés profitent le plus de l'assistant69 élèves de 10 à 17 ans
Kirschner, P. A., Sweller, J. et Clark, R. E. (2006). Why minimal guidance during instruction does not work. Educational Psychologist, 41(2). doi:10.1207/s15326985ep4102_1L'enseignement guidé est supérieur pour les novicesPosition contestée (Hmelo-Silver et al., 2007 ; Kapur)
Lehtinen, T., Lukkarinen, A. et Haaranen, L. (2021). Students struggle to explain their own program code. ITiCSE '21. doi:10.1145/3430665.3456322Beaucoup d'étudiants n'expliquent pas leur propre codeCours introductif en ligne
Lopez, M., Whalley, J., Robbins, P. et Lister, R. (2008). Relationships between reading, tracing and writing skills in introductory programming. ICER '08. doi:10.1145/1404520.1404531Tracer et expliquer sont corrélés à écrireCorrélations
Perkins, M., Furze, L., Roe, J. et MacVaugh, J. (2024). The Artificial Intelligence Assessment Scale (AIAS). Journal of University Teaching and Learning Practice, 21(6). doi:10.53761/q3azde36Niveaux d'usage autorisé de l'IA par évaluationCadre, pilote sans groupe témoin
Porter, L., Bailey Lee, C. et Simon, B. (2013). Halving fail rates using peer instruction. SIGCSE '13. doi:10.1145/2445196.2445250Le taux d'échec en informatique est divisé par deux ou troisÉtude de terrain, sans randomisation
Porter, L., Bailey Lee, C., Simon, B. et Zingaro, D. (2011). Peer instruction: Do students really learn from peer discussion in computing? ICER '11Le gain vient de la discussion, pas de la copieUn établissement
Prather, J. et al. (2024). The widening gap: The benefits and harms of generative AI for novice programmers. ICER '24. doi:10.1145/3632620.3671116Deux populations de novices divergent avec l'assistantQualitatif, petit échantillon
Roediger, H. L. et Karpicke, J. D. (2006). Test-enhanced learning. Psychological Science, 17(3). doi:10.1111/j.1467-9280.2006.01693.xSe tester bat relire pour la rétentionPsychologie, textes en prose
Sentance, S., Waite, J. et Kallia, M. (2019). Teaching computer programming with PRIMM. Computer Science Education, 29(2-3). doi:10.1080/08993408.2019.1608781Prédire, exécuter, examiner, modifier, créer améliore les résultats en classe hétérogèneCollégiens, 493 élèves
Université de Sydney. Two-lane approach to assessmentÉvaluation sécurisée et évaluation ouverte, au niveau du programmeCadre institutionnel
Xie, B. et al. (2019). A theory of instruction for introductory programming skills. Computer Science Education, 29(2-3). doi:10.1080/08993408.2019.1565235Enseigner explicitement tracer, écrire, comprendre des gabarits améliore la compréhensionExploratoire