In this page, see:

  • The courses I teach
  • MSc students I supervise (and how to become one)
  • Learn more about my TU Delft fellowship
  • See the open courses and materials I have devised
  • The technical books I have published
  • The research papers I wrote on computer science education

Courses I teach

I teach the following courses at TU Delft:

  • Software Testing and Quality (CSE1110, BSc): 2020, 2019, 2018, 2017. Course materials:

  • Software Analytics and Machine Learning for Software Engineering (IN4334, MSc): 2020, 2019. Course website

  • Software Refactoring (CS4300, MSc): 2021.

I also taught the following courses in the past:

  • Software Engineering Methods (TI3115TU, CS minor): 2020, 2019, 2018

  • Software Architecture (IN4315, MSc): 2019, 2018, 2017

MSc students supervision

I supervise MSc students on the topic of software engineering.

  • Check my MSc students page for some guidelines on how to approach me.

  • Check TU Delft’s educational repository and see my former students. (Note that the search also finds students that I was part of the committee; make sure you look to the students I am listed as supervisor.)

TU Delft Education Fellow

I am a TU Delft Education Fellow 2021-2022.

  • Read about my proposal in the official website:

  • Wait for more news on the topic here.

Open courses and material

  • Open lecture notes on software testing:

  • Check our edX professional certificate on software testing:

  • A set of video lectures where I implement a very simple PacMan game in Python to help students improving their programming skills:


To support my training and consultancy activities, I have authored books about TDD, automated software testing in practice, Object-Oriented design, and introduction to C Programming, which have sold more than 10k copies. The TDD book, in particular, has been used at many universities in Brazil.

They are in Brazilian portuguese. English versions will come.

  • Test-Driven Development: Teste e Design no Mundo Real (or TDD: Test and Design in the Real World). Casa do Código, 2012. Java, C#, Ruby, PHP.

  • Orientação a Objetos e SOLID para Ninjas: Projetando Classes Flexíveis (or Object-Orientation and SOLID for Ninjas: Designing Flexible Classes). Casa do Código, 2015. Versions: Java.

  • Testes Automatizados de Software: Um Guia Prático (or Automated Software Testing: A Practical Guide). Casa do Código, 2015. Java.

  • Introdução à Programação em C: Os primeiros passos de um desenvolvedor (or Introduction to Programming in C: The first steps of a developer). Casa do Código, 2015. Book.

Computer Science Education (CSEd) Research

I often write computer science education papers, based on my experience as a teacher:

Pragmatic Software Testing Education
Maurício Aniche, Felienne Hermans, Arie van Deursen
50th ACM Technical Symposium on Computer Science Education, 2019
This paper discusses how we have been teaching software testing in a pragmatic way. More specifically, we list 9 key elements we introduce in our course. Later, we then analyze students’ performance by reading their assignments and providing them feedback, and report the most common mistakes they make, challenges they face, and learning methods they prefer.

A Collaborative Approach to Teaching Software Architecture
Arie van Deursen, Maurício Aniche, Joop Aué, Rogier Slag, Michael de Jong, Alex Nederlof, Eric Bouwers
48th ACM Technical Symposium on Computer Science Education (SIGCSE), 2017
This paper describes the Software Architecture course given to the MSc students of Computer Science at TU Delft. Students collaboratively write a book about several open source systems that they analyze throughout the course.