J'ai toujours été fasciné par le fonctionnement des ordinateurs, pour lesquels j'ai une solide expérience dans la conception et la programmation. Par extension, je me suis aussi intéressé au traitement numérique du signal, à la conception des architectures numériques et à leur configuration/programmation. J'ai beaucoup étudié les systèmes reconfigurables (en particulier les FPGA) car ils permettent de réaliser un circuit (soit du matériel) au moyen d'une description logicielle, regroupant ainsi les forces de deux communautés longtemps séparées. Je m'intéresse à toutes les tentatives d'unification de celles-ci, que ce soit au niveau de la modélisation, de l'implémentation ou de la vérification des systèmes numériques. Il est aujourd'hui relativement facile et rapide de créer du logiciel. Le web 2.0 en est un bon exemple. Par contre, créer un circuit logique demeure une tâche complexe, réservée aux professionnels. Mon but ultime serait de rendre le matériel aussi accessible que le logiciel grâce à des langages, des outils et des bibliothèques appropriées.

Je développe un langage de description de matériel de niveau intermédiaire entre les HDLs classiques et les langages utilisés en génie logiciel. Ce langage permet de faire abstraction de tous les problèmes purement matériels pour se concentrer sur les aspects algorithmiques. Le modèle architectural sous-jacent est un réseau de Machines Algorithmiques Évoluées (MAE). Ces machines s'inspirent des traditionnels ASM (Algorithmic State Machine), des proceseurs et des machines à jetons. À la manière des ASM, elles sont capables d'effectuer des séquences d'opérations parallèles et sont précises au cycle d'horloge. À la manière des processeurs, elles sont capables de faire des appels de fonction (en fait des appels d'état) et donc d'implémenter la récursivité. À la manière des machines à jetons, elles sont capables d'envoyer des jetons de données au travers de diverses resources (ou entre elles) sans se soucier de la synchronisation. Divers algorithmes récursifs (dont QuickSort) ont déjà été synthétisés automatiquement avec succès. À court terme, je compte aborder l'intégration des processeurs comme des machines algorithmiques particulièrement complexes (mais très limitées au niveau du parallélisme) au sein d'un réseau de MAE. À moyen terme, je désire étudier la possibilité de reconfigurer dynamiquement ces machines, à l'instar de ce qui se fait déjà en logiciel avec les systèmes JIT (Just In Time).

Si les aspects théoriques de la recherche sont en soi intéressants, je suis particulièrement sensible aux recherches qui peuvent avoir un impact direct sur la vie de mes semblables. Un projet qui me tient à coeur est la protection des enfants sur l'Internet. J'ai développé et implanté un algorithme de détection rapide de fichiers sur des connexions à très haut débit (10GBE, 40GBE et on vise le 100GBE) qui est présentement utilisé par NetClean, une compagnie qui lutte contre l'exploitation sexuelle des enfants.