Current teachings

Most of my teachings are in French. They all happen at ENS Rennes.

  • Technical teachings
    • Sys1: C programming and networking (L3S1).
    • Prog2: C++ language and software engineering (L3S2).
    • ProgSys: System programming.
    • HPC: High performance computing (M1S1).
  • Methodological teachings (all materials are on the same page).
    • Teaching practice: Conducting a teaching in primary school (L3S2) and Inventing CS unplugged activities (M2S1). See also this page.
    • Research methodology: Finding and conducting a research internship (L3S2), reading the bibliography and presenting a scientific work (M1S1).

L3S1: last year of bachelor (L3), winter semester; L3S2: last year of bachelor (L3), spring semester; M1S1: first year of master (M1), winter semester; M1S2: first year of master (M1), spring semester; M2S1: last year of master (M1), winter semester.

Past teachings

  • Retrogames: one-week project for the freshly enrolled students.
  • Scala: Scala programming.
  • C second language: C programming for those already fluent in another programming language.
  • AlgoProg: Algorithms and programming, for beginners.
  • My past teaching (2005-2015) in Nancy are collected elsewhere.


  • The Programmer's Learning Machine, a free programming exerciser to learn Java, Python or Scala through over 200 exercises providing a fast and graphical feedback.
  • The shutorial is a tutorial to learn the basics of the shell in a controlled environment

Other things

A word of warning

Beginners in programming sometimes think that nobody will notice if they take the code of someone, change it a bit, and put their name on it. This is wrong! and this is not true! Moving chunks of code around is like moving food around on your plate to disguise the fact that you havn't eated all your brussel sprouts (as would say Dan): it's not helping.

Comics de Bill Amend sur la triche

(By Bill Amend, 2002)

Working in group is a very good thing. Checking the classical solutions is often a good idea to not reinvent the wheel. Discussing your assignments with colleagues is certainly the way to go, and you will probably need to do some drawing on a board at some point. But be careful! The danger zone begins when you read the code of someone else.

Taking the code of someone else (either found on Internet or from a friend) and putting your name on it has a name. This is called plagiarism, and it's certainly a deadly sin in the University.

I will certainly detect your fraud. Everyone has its own coding style that you can recognize from reading the source. In addition, there is some very good plagiarism detection tools out there. My favorite one is MOSS.

TODO other stuff I may want to detail here: