vendredi 31 octobre 2008

Après les rentrées, examens, soutenances et jurys de septembre, les activités d'enseignement et de recherche reprennent un rythme de croisière.

Enseignement

Au premier semestre, j'interviens principalement en Master 2 Base de données et intelligence artificielle (BD-IA) et en Master 2 Image et intelligence artificielle (Image-IA). J'enseigne la programmation par contraintes. Il s'agit d'un ensemble de concepts, de principes, de techniques, et l'algorithmes (on parle de paradigme) permettant d'une part la modélisation, et d'autre part la résolution de problèmes d'intérêt industriel, stratégique, ou scientifique, notamment.

Cette année, j'ai adopté une stratégie pédagogique innovante qui laisse une grande part d'autonomie aux étudiants et les incite à fournir un travail personnel continu (et pas seulement au cours de la semaine précédent l'examen...). L'enseignement est articulé autour d'une grille de compétences fournie dès la rentrée aux étudiants, et qui fait office de barème d'évaluation de l'examen final. Des supports de cours détaillés sont donnés à l'avance. Les étudiants doivent s'approprier intellectuellement leurs contenus, et préparer des questions qui devront être soumises à l'enseignant avant la séance de cours. Celui-ci profitera de chaque séance pour donner des explications ciblées sur les points qui ont posés problème et, en questionnant les étudiants, vérifiera leurs acquis. Il traitera également des exercices types en mettant en évidence la démarche intellectuelle permettant de les résoudre. Les sujets de travaux dirigés sont également donnés à l'avance, et les étudiants sont systématiquement interrogés pendant les séances correspondantes.

la mise en place de cette pratique, que j'appelle pédagogie participative, a nécessité de rédiger un nouveau support de cours, ainsi des des sujets de TD. C'est un gros investissement en temps de travail, mais j'espère que ce sera au bénéfice des étudiants.

Recherche

J'ai d'une part mis à jour une bibliothèque Java nommée BoolVar, dédiée à la traduction de contraintes. Cette contribution open-source a pour vocation de permettre la modélisation de problèmes exprimés à l'aide de contrainte, et leur traduction sous une forme rudimentaire (formule CNF ou pseudo Booléenne) pouvant être traitée par de nombreux solveurs résultant de décennies de recherches communautaires, et en constante évolution. L'idée est donc de faciliter la résolution indirecte (i.e., via traduction) de problèmes spécifiés à l'aide de contraintes.

D'autre part, j'ai rédigé un article scientifique sur la version actuelle de BoolVar. Cet article de 15 pages comprend une description de cette bibliothèque et de ses fonctionnalités, incluant les algorithmes de codage, ainsi qu'un exemple d'application qui consiste en 16 variantes de codage du problème des règles de Golomb sous forme CNF (i.e., une formule de logique propositionnelle sous forme normale conjonctive). Ce papier vient d'être soumis à publication dans les proceedings d'un Workshop international. C'est loin d'être gagné car les publications centrées sur un outil, plus qu'une innovation scientifique, sont toujours difficiles à placer. C'est d'ailleurs dommage car à mon sens la programmation d'un logiciel d'aide à l'expérimentation est une contribution à part entière. Et surtout, je n'ai pas accès aux services d'un ingénieur qui pourrait me décharger de ce travail indispensable.