A Few Stats

Hours per Teaching Type Hours per Teaching Level

Teaching Establishments

INSA Rennes logo INSA Rennes (Fr)
Since 2011
UPM logoUniv. Politécnica de Madrid (Es)
2016 – 2017
UCA logoUniversité Clermont Auvergne (It)
ISTIC logoISTIC – Univertité Rennes 1 (Fr)
Since 2015
INSA Euromediterranee logoINSA Euroméditerranée (Ma)
Since 2016

My Courses

Parallel Programming for Embedded MPSoCs [Master 2]

Lecture: 8 hr Lessons: 0 hr Lab: 12 hr Project: 10 hr
Course description:

For many years, following the ever-increasing number of transistors per chip, advances in computer architecture mostly consisted of adding complex mechanisms to mono-core processors to improve their computing performance. In the last decade, the continuous growth of computing performance was supported by the introduction of multi-core architectures, first for high-performance computing, then in mainstream desktop CPUs, and now in smartphones and embedded systems.

Embedded systems implementing modern applications such as telecommunication standard 3GPP Long Term Evolution (LTE) and video compression standard MPEG High Efficiency Video Coding (HEVC) require high execution speed, low power consumption and run-time adaptivity.

Adaptivity, memory limitation and load balancing between cores are hard to obtain. This course intends to give an overview of distributed high performance solutions and of the new challenges brought by latest applications and Multiprocessors Systems-on-Chips (MPSoCs) architectures such as the 8-core Texas Instruments TMS320C6678 or the 256-core Kalray MPPA. Solutions for programming such architectures will be discussed.

Targeted competences are:
– To understand internal mechanisms of multicore MPSoCs
– To program multi-core architectures using pthread, OpenMP, and Preesm
– To choose a multicore programming method while understanding its limitations
– To design a high performance embedded systems using available resources efficiently

– Models of Computation
– Multicore Architectures
– Architecture Models
– Assignment and Ordering Problem
– Multicore Programming Tools

Taught courses:

  • INSA Rennes – Electronics and Computer Engineering: Yearly since 2015
  • ISTIC – University of Rennes 1 – Embedded System Master: Yearly since 2014
  • Universidad Politecnica de Madrid: 2015
  • Université Clermont Auvergne – Images and Signal Processing Master: 2019

Close description

Git: basic principles and use [Bachelor 3]

Lecture: 3 hr Lessons: 0 hr Lab: 3 hr Project: 0 hr
Course description:

When working on a group project, using an efficient system for sharing files is often key to success. Unfortunately, the most commonly used means of file transfers (e-mails, USB drive, synchronised folders, smoke signals…) are not very well suited for intensive file exchanges, even in a small group. Moreover, with such systems, it is difficult to keep track of the evolution of the project, which makes it very difficult to find the origin of a bug in project. The purpose of Concurrent Versioning Systems (CVS) is to offer file sharing systems specifically design for the simultaneous work of many developers on a common project.

In this course, the basic concepts of the git versioning system are introduced, assuming no prior knowledge on any versioning system. After presenting the motivations for using a versioning system, the basic mechanics behind git will be introduced both conceptually, and through the illustration of tool commands. A quick comparison of git with other Concurrent Versioning Systems (CVS), a presentation of tools and website based on git, and a set of good practices for git users conclude this seminar. Concepts presented during the lecture will be put into practice during a lab.

Taught courses:

  • INSA Rennes – Electronics and Computer Engineering: Yearly since 2015
  • University of Rennes 1 – Embedded System Master: Yearly since 2018
  • Universidad Politecnica de Madrid: 2017

Close description

C Programming Project [Bachelor 3]

Lecture: 0 hr Lessons: 0 hr Lab: 0 hr Project: 24 hr
Course description:

The objective of this project is to use the programming skills acquired during the previous semester. Objectives are classified along 3 axes:

  1. Project Management
    * Develop a complete software application within a team.
    * Write precise specification and user requirements
    * Work with greater autonomy in a collaborative team
    * Experiment necessity of project management methodology
    * Develop skills for written and oral presentation of technical work
    * Establish a critical assessment of project results with respect to initial project goal
  2. Software Architecture and Design
    * Conceive a software architecture according to functional specifications.
    * Implement the Model-View-Controller design pattern.
    * Select third-party library fitting the project objectives.
  3. Technical skills
    * Document the code with Doxygen
    * Implement unitary tests.
    * Master professional tools for collaborative software development (Git, Gitlab, …)
    * Self-training on some technical points in software development (graphic interfaces…)


  1. Produce written specifications
  2. Task distribution
  3. Regular meetings with supervising teacher
  4. Project development
  5. Report writing, oral presentation preparation
  6. Oral defense of the project
Taught courses:

  • INSA Rennes – Electronics and Computer Engineering: Yearly since 2016

Close description

Object-Oriented Programming and Complexity on Java [Bachelor 2]

Lecture: 10 hr Lessons: 0 hr Lab: 12 hr Project: 0 hr
Course description:

A first objective is to advance the knowledge of object oriented programming concepts.
A second objective is to improve skills in Java language programming by using it for practical works.
A third objectives is to address some algorithms aspects that are classical in Computer Science.


  1. Basic reminders (variables, control flow, classes & objects, aggregation)
  2. Inheritance
  3. Abstract & Interface. Modularity (static, package)
  4. Using Exceptions
  5. Using Genericity
  6. Graphical User Interfaces
  7. Sorting Algorithms and Complexity
  8. Divide and Conquer / Dynamic Programmation
  9. Graphs, Trees
Taught courses:

  • INSA Rennes – Electronics and Computer Engineering: Yearly from 2013 to 2016
  • INSA Euro-Méditerranée – Electrical Engineering: Yearly since 2016

Close description

Participations to Other Courses