- Sistemas informáticos:la perspectiva de un programador, 2.ª edición (Prentice Hall, 2016).
- Lenguajes de programación en contexto:un estudio de los principales paradigmas de programación (Springer, 2013).
- La práctica de la programación (Prentice Hall, 2010).
- Diseño e Implementación Orientado a Objetos (Prentice Hall, 1999).
Artículos
- “La Importancia de los Lenguajes de Programación en el Currículo de Informática” (Comunicaciones de la ACM, julio 2016).
- “El futuro de la educación en informática en un mundo que cambia rápidamente” (Comunicaciones de la ACM, agosto de 2015).
- “El Papel de la Teoría en la Educación en Ciencias de la Computación” (Comunicados de la ACM, junio de 2014).
- "¿Por qué enseñar programación?" (Comunicados de la ACM, mayo de 2012).
Otro
- Coeditor de la serie de Springer International Publishing "Fundamentos y Tendencias® en Lenguajes de Programación".
- Miembro del consejo editorial de la Revista ACM sobre Recursos Educativos en Computación (JERIC).
- Presidente del Comité de Programa del Simposio Técnico ACM SIGCSE sobre Educación en Ciencias de la Computación (SIGCSE) en 2016 y 2017.
- Miembro del Comité Directivo del Simposio Técnico SIGCSE sobre Educación en Ciencias de la Computación (SIGCSE) desde 2014.
- Miembro de la Facultad de Computing Research Association (CRA) desde 2012.
- Miembro de la Association for Computing Machinery (ACM) desde 2009.