Version without JavaScript, read-only: workshops, quizzes and running code are not available here. Full version · Catalogue · Sign in

Language
Français · English

Philippe Roussille's courses

Courses

Professional programming

3iL Ingénieurs · Rodez · 3iL I2 · work-study track (promo 24) · September → November 2026 · FR · EN · restricted access

Software architecture, exceptions, design patterns. Thirteen notions certified on paper, one project assessed with the authorised assistant.

Java, before term starts

3iL Ingénieurs · Rodez · 3iL 1st year · FR · EN

The pre-term Java course: chapters, self-marking exercises and projects, with a real Java compiler in the browser. A placement test tells you where to start.

Object-oriented design

3iL Ingénieurs · Rodez · 3iL Ing I1 - Apprenticeship · FR · EN · restricted access

Object-oriented Java in depth: classes and objects, inheritance, interfaces, generics, collections and streams.

Developer fundamentals

3iL Ingénieurs · Rodez · 3iL 1st year · FR · EN · restricted access

The tools and reflexes of the trade: terminal, Git, refactoring, defensive programming, debugging, testing and documentation.

UML

3iL Ingénieurs · Rodez · 3iL 1st year · FR · EN · restricted access

Modelling software: requirements and use cases, dynamic behaviour, project structure.

Study skills

3iL Ingénieurs · Rodez · 3iL 1st year · FR · EN · restricted access

Learning, writing, surviving on the command line.

Prompt engineering

3iL Ingénieurs · Rodez · 3iL 1st year · FR · EN · restricted access

Writing for a language model, and what that commits you to.

Introduction to research

3iL Ingénieurs · Rodez · 3iL 2nd year · FR · EN · restricted access

Writing a literature review: finding, sorting, reading and citing papers, with Zotero and LaTeX. S8 SI 3490.

Past courses

Functional programming in Caml

EPITA · Toulouse · 1st year (preparatory cycle) · FR · EN

An algorithmics seminar in Caml to start programming: definitions, types, functions, case analysis, imperative features and recursion.

Theory of regular languages

EPITA · Toulouse · 2nd year (preparatory cycle) · FR · EN

Words and languages, regular expressions, finite automata; compiling an expression into a deterministic automaton and back, closure properties, minimisation, and what automata cannot do.

Programming in C

EPITA · Toulouse · 2nd year (preparatory cycle) · FR · EN

C and its Unix environment: compiling, pointers and arrays, memory layout, data structures, input and output, processes, and concurrent programming with POSIX threads.

Logic for computer science

Université Paul Sabatier · Toulouse · L2 Computer Science (2nd year of the Bachelor's degree) · FR · EN

Propositional calculus and first-order logic: reading, evaluating, transforming and proving formulas, and modelling a problem so that a solver can solve it.

68000 assembly

Université Paul Sabatier · Toulouse · L1 Computer Science · FR · EN

Programming the Motorola 68000 processor as close to the machine as possible: representing numbers, handling registers and memory, writing tests, loops and subroutines.

My method: how I organise my courses

This page describes how my courses are organised, and why. I wrote it for my students, who have a right to know how they are assessed, and for colleagues who ask themselves the same questions as I do.

Where I start from

A coding assistant can now produce a complete student project in a few minutes, with its documentation and its diagrams. A submitted project therefore no longer tells me much about the person who submits it. I do not see this as cheating. When the project weighs heavily in the grade and a tool can do it, using the tool is a reasonable choice. And banning it would make no sense: I could not check it outside the room, and my students are apprentices who use these tools at work.

The problem existed before assistants. In 2021, Lehtinen, Lukkarinen and Haaranen had already shown that a large share of students in an introductory course could not explain the code they had submitted themselves. Assistants have mostly made the situation much more common.

Two separate assessments

In an engineering subject like the ones I teach, there are two things to assess, and they are not assessed the same way.

The first is judgement: reading code, seeing what is wrong, deciding where to intervene, justifying a design choice, estimating what a change will cost. The assistant does not do this for the student. The second is the ability to build something substantial with today's tools, assistant included, without losing control of what is produced.

The second depends on the first. Someone who cannot read the code the assistant offers cannot check it. Several studies point in this direction. Bastani and colleagues (2025) followed high-school students in mathematics: with free access to an assistant, their results improved during practice, then dropped in the exam, once access was removed. A version of the assistant that gave hints rather than answers avoided this drop. Among novice programmers, Prather et al. (2024) and Kazemitabaar et al. (2023) observe that the assistant mostly benefits those who already have the basics, and that it sustains misconceptions about how code works in the others.

So I have two assessments, which my students and I call the licence and the driving.

  • The licence is an individual exam, on paper or offline, without AI. You have to read code, find what is wrong, modify it and justify your choices.
  • The driving is the project. The assistant is allowed there, and even expected. I look at whether the student knows how to frame what they ask for, check what they get, assemble the work of several people into coherent code, and explain any line.

The project grade is weighted by the exam grade: without the licence, the driving does not fully count.

I am not the only one to separate things this way. The University of Sydney distinguishes a secured assessment from an open one, and the AI Assessment Scale (Perkins, Furze, Roe and MacVaugh, 2024) sets out levels of permitted AI use for each assessment. Bearman and colleagues (2024) call evaluative judgement the ability to judge the quality of a piece of work, one's own as well as a tool's. That is what the second assessment aims at.

What I have given up

I no longer give lectures in an amphitheatre, nor step-by-step guided lab sessions with a skeleton to fill in. A lecture passes on information that can be found everywhere today. A guided lab is finished in thirty seconds with an assistant, and it already required no decision.

In class, I keep three things: short explanations, given when they are needed; exercises that start from a problem and force a choice; and my feedback on what the students produce. The meta-analysis by Freeman et al. (2014), covering 225 studies, finds that making students work during the session rather than making them listen raises results by about half a standard deviation, and the failure rate drops from 34% to 22%.

How a sequence unfolds

Each course is divided into 45-minute sequences, with one notion per sequence, two at most. A sequence always follows the same order:

  1. a starting situation, on existing code: a bug, an audit, a change request;
  2. a five-to-seven-minute explanation, done live on that code;
  3. a pause, where everyone chooses an exercise among three levels;
  4. a core exercise, checked by tests;
  5. a deeper exercise, for those who have finished;
  6. a short exit question.

Between sessions, there is a chapter to read, sometimes a video of six minutes at most followed by a question, and a quiz.

This order (predict, run, investigate, modify, then make) comes from the PRIMM method (Sentance, Waite and Kallia, 2019). It rests on an observation: being able to trace and explain code comes before being able to write it, and the two go together (Lopez et al., 2008; Xie et al., 2019). That is why my exercises almost always start from code that already exists. It is also the ground where the assistant helps least, and at work, you spend far more time modifying code than writing it.

Three levels, your choice

After each explanation, I leave four minutes and three exercises on the same idea. Level 1 redoes what has just been shown, with the example in front of you. Level 2 matches what you need to be able to do in the exam. Level 3 is a more open question, for those who want to dig deeper. Everyone chooses their level at each pause, and can change at the next one. There are no ability groups.

The core exercise offers graduated hints, which can be opened without penalty. Beyond that, the deeper exercise is done without help. Two results justify this choice. For novices, explicit explanations and worked examples work better than free discovery (Kirschner, Sweller and Clark, 2006; the article is debated, but it holds on this point). And what helps a novice can hinder someone more advanced (Kalyuga et al., 2003).

Voting in class

Each explanation starts with a question: what will this code do? Everyone votes. When the room is split, between 30 and 70% correct answers, everyone discusses with their neighbour for two minutes, then we vote again. In computer science, Porter, Bailey Lee and Simon (2013) report that this method brought the failure rate down from 20% to 7% over ten years of courses. Porter et al. (2011) also checked that students really learn during the discussion, and do not merely copy their neighbour's answer.

Between sessions

My students are on work-study programmes and spend several weeks in their company between two sessions. For these periods, I give a roadmap with dated deadlines. At each deadline, a quiz closes, and 40% of its questions come back to the notions missed in previous quizzes. This is the best-supported part of the whole set-up: testing yourself helps you remember more than rereading does (Roediger and Karpicke, 2006; Adesope, Trevisan and Sundararajan, 2017, a meta-analysis of 217 studies).

The exam

The exam asks eight to twelve in-depth questions rather than thirty short ones. Each one gives some code, and asks you to find a flaw in it, propose a change and justify it. One of them is about code produced by an assistant, into which I have slipped errors, because reviewing such code is now part of the job. Another is about the project's domain: the student who has understood their project has an advantage there, the one who delegated it entirely does not.

A word of caution

Deslauriers and colleagues (2019) compared, in physics, a lecture course and a course where students work in class. The latter learnt more, but felt they were learning less. My course probably gives my students the same impression. I tell them so from the first session.

What has not been demonstrated

Two of my choices rest, as far as I know, on no published study: weighting the project grade by the exam grade, and the exam in which each student modifies their own repository, offline and under time limits. These are bets, which seem to me consistent with the rest. I collect data on this course, anonymously and with the students' consent, and I will publish what it shows, even if it proves me wrong.

Several of the studies cited concern audiences other than mine: high-school students, physics students, middle-school pupils. Their results do not necessarily apply as they stand to engineering apprentices. The table below gives the limit of each.

References

ReferenceWhat it establishesLimit
Adesope, O. O., Trevisan, D. A. and Sundararajan, N. (2017). Rethinking the use of tests: A meta-analysis of practice testing. Review of Educational Research, 87(3). doi:10.3102/0034654316689306Testing yourself consolidates memory, in the laboratory and in classGeneral psychology
Bastani, H. et al. (2025). Generative AI without guardrails can harm learning. PNAS, 122(26). doi:10.1073/pnas.2422633122Free access to an assistant degrades performance once access is removed; guardrails preserve itHigh-school students, mathematics
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.2335321Evaluative judgement as a central outcomeConceptual framework
Deslauriers, L. et al. (2019). Measuring actual learning versus feeling of learning. PNAS, 116(39). doi:10.1073/pnas.1821936116With active learning, students learn more while feeling they learn lessPhysics, one institution
Freeman, S. et al. (2014). Active learning increases student performance in science, engineering, and mathematics. PNAS, 111(23). doi:10.1073/pnas.1319030111A gain of 0.47 standard deviation, failure down from 34% to 22%Volunteer instructors
Kalyuga, S., Ayres, P., Chandler, P. and Sweller, J. (2003). The expertise reversal effect. Educational Psychologist, 38(1)What helps a novice hinders an advanced learnerLaboratory tasks
Kazemitabaar, M. et al. (2023). Studying the effect of AI code generators on supporting novice learners. CHI '23. doi:10.1145/3544548.3580919The best prepared benefit most from the assistant69 pupils aged 10 to 17
Kirschner, P. A., Sweller, J. and Clark, R. E. (2006). Why minimal guidance during instruction does not work. Educational Psychologist, 41(2). doi:10.1207/s15326985ep4102_1Guided instruction is superior for novicesContested position (Hmelo-Silver et al., 2007; Kapur)
Lehtinen, T., Lukkarinen, A. and Haaranen, L. (2021). Students struggle to explain their own program code. ITiCSE '21. doi:10.1145/3430665.3456322Many students cannot explain their own codeOnline introductory course
Lopez, M., Whalley, J., Robbins, P. and Lister, R. (2008). Relationships between reading, tracing and writing skills in introductory programming. ICER '08. doi:10.1145/1404520.1404531Tracing and explaining correlate with writingCorrelations
Perkins, M., Furze, L., Roe, J. and MacVaugh, J. (2024). The Artificial Intelligence Assessment Scale (AIAS). Journal of University Teaching and Learning Practice, 21(6). doi:10.53761/q3azde36Levels of permitted AI use per assessmentFramework, pilot without a control group
Porter, L., Bailey Lee, C. and Simon, B. (2013). Halving fail rates using peer instruction. SIGCSE '13. doi:10.1145/2445196.2445250The failure rate in computer science is halved or divided by threeField study, not randomised
Porter, L., Bailey Lee, C., Simon, B. and Zingaro, D. (2011). Peer instruction: Do students really learn from peer discussion in computing? ICER '11The gain comes from the discussion, not from copyingOne institution
Prather, J. et al. (2024). The widening gap: The benefits and harms of generative AI for novice programmers. ICER '24. doi:10.1145/3632620.3671116Two populations of novices diverge with the assistantQualitative, small sample
Roediger, H. L. and Karpicke, J. D. (2006). Test-enhanced learning. Psychological Science, 17(3). doi:10.1111/j.1467-9280.2006.01693.xTesting beats rereading for retentionPsychology, prose texts
Sentance, S., Waite, J. and Kallia, M. (2019). Teaching computer programming with PRIMM. Computer Science Education, 29(2-3). doi:10.1080/08993408.2019.1608781Predict, run, investigate, modify, make improves results in mixed-ability classesLower-secondary pupils, 493 students
University of Sydney. Two-lane approach to assessmentSecured assessment and open assessment, at programme levelInstitutional framework
Xie, B. et al. (2019). A theory of instruction for introductory programming skills. Computer Science Education, 29(2-3). doi:10.1080/08993408.2019.1565235Explicitly teaching tracing, writing and understanding templates improves comprehensionExploratory