- Systemy komputerowe:perspektywa programisty, wydanie 2 (Prentice Hall, 2016).
- Języki programowania w kontekście:przegląd głównych paradygmatów programowania (Springer, 2013).
- Praktyka programowania (Prentice Hall, 2010).
- Projektowanie i wdrażanie zorientowane obiektowo (Prentice Hall, 1999).
Artykuły
- „Znaczenie języków programowania w programie nauczania informatyki” (Komunikaty ACM, lipiec 2016).
- „Przyszłość edukacji informatycznej w szybko zmieniającym się świecie” (Komunikaty ACM, sierpień 2015).
- „Rola teorii w edukacji informatycznej” (Komunikaty ACM, czerwiec 2014).
- „Dlaczego uczyć programowania?” (Komunikaty ACM, maj 2012).
Inne
- Współredaktor serii Springer International Publishing „Podstawy i trendy® w językach programowania”.
- Członek rady redakcyjnej czasopisma ACM Journal on Educational Resources in Computing (JERIC).
- Przewodniczący Komitetu Programowego Sympozjum Technicznego ACM SIGCSE na temat edukacji informatycznej (SIGCSE) w latach 2016 i 2017.
- Członek Komitetu Sterującego Sympozjum Technicznego SIGCSE na temat edukacji informatycznej (SIGCSE) od 2014 roku.
- Członek Wydziału Computing Research Association (CRA) od 2012 roku.
- Członek Stowarzyszenia Maszyn Obliczeniowych (ACM) od 2009 roku.