Teaching
cours.roussille.eu is the platform I built for my students. It brings together my current courses at 3iL Ingénieurs (Rodez) and some of those I taught earlier at EPITA and Université Paul Sabatier (Toulouse). Each course has its chapters, its exercises and, depending on the subject, its projects.
Code is written and run directly in the page: a real Java compiler, an OCaml interpreter, a 68000 simulator you can step through. There is nothing to install, and exercises are checked by tests, with immediate feedback. The platform gives my students chapters to read and quizzes that bring back the concepts they missed.
The course materials are freely accessible; the core of the courses (exercises, learning paths, and so on) is reserved for my students. The platform also has a page, "Ma méthode" (in French), where I explain how my courses are organised and assessed, and which studies these choices rest on.
Current courses
3iL Ingénieurs (Rodez)
I coordinate the Development area on the Rodez campus.
First year
- Professional programming (apprenticeship track, September to November 2026): software architecture, exceptions, design patterns.
- Object-oriented design (apprenticeship): object-oriented Java in depth, with classes and objects, inheritance, interfaces, generics, collections and streams.
- Java before term starts (freely accessible): the pre-term course, with a placement test that tells you where to begin.
- Developer fundamentals: terminal, Git, refactoring, defensive programming, debugging, testing and documentation.
- UML: requirements and use cases, dynamic behaviour, project structure.
- Study skills: learning, writing, surviving on the command line.
- Prompt engineering: writing for a language model, and what that commits you to.
- Microservices architecture: splitting a system into independent services, designing APIs, and deploying them in a DevOps pipeline (Docker, Jenkins, ELK, Kubernetes), with Spring Boot, Django or Node.js.
Second year
- Advanced development, in three subjects:
- Advanced architecture: an overview of software architecture styles (monolithic, hexagonal, microservices…), advanced patterns (DDD, CQRS, Event Sourcing, Circuit Breaker, Saga) and reasoned choices according to a project's constraints.
- Advanced programming: the Rust, JavaScript, Python, Java, Go and Elixir languages.
- Advanced DevOps, taught by F. Dieny.
- Functional programming: reasoning about a program as a transformation of data, in F#, then carrying those habits over to modern Java (lambdas, Streams).
- Introduction to research: framing a research question, carrying out a literature search (with Zotero and LaTeX), then writing a state of the art as a group, in the format of a scientific article.
Tutorials
- Algorithms and Python (for French scientific preparatory classes): on Tatoufé.
Past courses
EPITA, Toulouse (2019 to 2020)
- Functional programming in Caml (first year, preparatory cycle): an algorithms seminar for getting started with programming.
- Theory of regular languages (second year, preparatory cycle): regular expressions, finite automata, minimisation.
- Programming in C (second year, preparatory cycle): pointers, memory, data structures, POSIX processes and threads.
- Algorithms in Python (not on the platform).
- Programming in C# (not on the platform).
Université Paul Sabatier, Toulouse (2013 to 2017, during my PhD)
- Logic for computer science (L2 Informatique, second-year computer science): propositional calculus and first-order logic.
- 68000 assembly (L1 Informatique, first-year computer science): programming the Motorola 68000 processor as close to the machine as possible.
- Computing for first-year natural sciences (L1) (not on the platform): a course centred on Python and R.
- Programming in Ada (not on the platform).