- Sistemi informatici:la prospettiva di un programmatore, 2a edizione (Prentice Hall, 2016).
- Linguaggi di programmazione nel contesto:un'indagine sui principali paradigmi di programmazione (Springer, 2013).
- La pratica della programmazione (Prentice Hall, 2010).
- Progettazione e implementazione orientata agli oggetti (Prentice Hall, 1999).
Articoli
- "L'importanza dei linguaggi di programmazione nel curriculum dell'informatica" (Comunicazioni dell'ACM, luglio 2016).
- "Il futuro dell'educazione informatica in un mondo in rapido cambiamento" (Comunicazioni dell'ACM, agosto 2015).
- "Il ruolo della teoria nella didattica dell'informatica" (Comunicazioni dell'ACM, giugno 2014).
- "Perché insegnare a programmare?" (Comunicazioni dell'ACM, maggio 2012).
Altro
- Co-editore della serie Springer International Publishing "Foundations and Trends® in Programming Languages".
- Membro del comitato editoriale dell'ACM Journal on Educational Resources in Computing (JERIC).
- Presidente del comitato di programma dell'ACM SIGCSE Technical Symposium on Computer Science Education (SIGCSE) nel 2016 e 2017.
- Membro del comitato direttivo del SIGCSE Technical Symposium on Computer Science Education (SIGCSE) dal 2014.
- Faculty Fellow della Computing Research Association (CRA) dal 2012.
- Membro dell'Association for Computing Machinery (ACM) dal 2009.