- Systèmes informatiques :le point de vue d'un programmeur, 2e édition (Prentice Hall, 2016).
- Langages de programmation en contexte :une étude des principaux paradigmes de programmation (Springer, 2013).
- La pratique de la programmation (Prentice Hall, 2010).
- Conception et mise en œuvre orientées objet (Prentice Hall, 1999).
Articles
- « L'importance des langages de programmation dans le cursus d'informatique » (Communications de l'ACM, juillet 2016).
- "L'avenir de l'enseignement informatique dans un monde en évolution rapide" (Communications de l'ACM, août 2015).
- « Le rôle de la théorie dans l'enseignement de l'informatique » (Communications de l'ACM, juin 2014).
- "Pourquoi enseigner la programmation ?" (Communications de l'ACM, mai 2012).
Autre
- Co-éditeur de la série Springer International Publishing "Foundations and Trends® in Programming Languages".
- Membre du comité de rédaction de l'ACM Journal on Educational Resources in Computing (JERIC).
- Président du comité de programme du Symposium technique ACM SIGCSE sur l'enseignement de l'informatique (SIGCSE) en 2016 et 2017.
- Membre du comité directeur du Symposium technique SIGCSE sur l'enseignement de l'informatique (SIGCSE) depuis 2014.
- Professor Fellow de la Computing Research Association (CRA) depuis 2012.
- Fellow de l'Association for Computing Machinery (ACM) depuis 2009.