Charles Prud'homme

Assistant professor @ IMT Atlantique, FR.


About me

Since 2018, I am an assistant professor at IMT Atlantique, a member of the TASC Team inside the lab of digital sciences of Nantes.

As a researcher, I work on constraint programming, from from tool design to applications.

Since 2007, I am the project leader and main contributor of Choco solver, a Free Open-Source Java library dedicated to Constraint Programming.


I am interested in the different aspects of constraint programming. This covers solving mechanisms, constraints and propagators definiton, exploration of the search space but also problem modelling and resolution. I pay particular attention to making this complex problem-solving tool accessible to as many people as possible.

I joined TASC in September 2007. Between September 2007 and September 2018, I was an research engineer working on Choco-solver. During this period, I was a Phd. student (2011-2014).

I defended my Ph.D. thesis, entitled "Controlling propagation and search in a constraint solver", in February 2014 at the Ecole des mines de Nantes (now IMT Atlantique) under the supervision of Narendra Jussien, Xavier Lorca and Rémi Douence.


PhD. students Arthur Gontier (2020-2023), Mathieu Vavrille (2020-2023).

Master students Arthur Gontier (2020), Quentin Huitric (2020), Marc-Vincent Seuanes Pereira (2019),
Henry D. Saenz (2018), Antoine Carat (2016).


Choco solver


A Free Open-Source Java library for Constraint Programming.



Self Management of Fog Ressources.



Constraints and Model Engineering for Autonomic Clouds.



Constraints and Model Engineering for Autonomic Clouds.



Dealing with urban transit crew rescheduling problem.

Infra JVM


Towards a Java Virtual Machine for pervasive computing.


Linear Programming

This cours introduces the basics of Linear Programming and Mixed Integer Programming. Solving techniques are presented but the focus is on modelling.

Algorithm and Machine Learning

This course presents the three main families of machine learning: supervised learning, unsupervised learning and reinforcement learning.

Modelling and object-oriented programming

This course introduces the basics of object programming and the Java programming language.

Final internships

This consists in coordinating the internships of the future engineer students.