Teaching and Fostering Reflection in Software Engineering Project Courses
Book chapter, 2019

Reflection is an important part of agile software processes as witnessed, e.g., by the Sprint Retrospectives in Scrum or by the various learning feedback loops in XP. Engineering education also emphasises the importance of reflective practice, e.g., in Kolb's learning cycle and Schön's reflection-in/on-action. Our contribution in this chapter is a toolkit for reflective practice that shows how reflection can be used by software engineering students for two purposes: to reflect on the application of a software process and to reflect on their learning process. In order to help students understand the purpose of reflection and how to approach reflection, we follow a cognitive apprenticeship approach in which the teachers reflect about the events in the course, their own goals, and how they are aligned with the teaching. Students are asked to reflect during supervisions and as part of their written assignments from the very beginning of the course. We thus combine a meta-cognitive approach where reflection is taught as a learning strategy with a common software engineering practice of continuous improvement through reflection. We evaluate the reflective model and a course design based on it through the student, teacher, and theoretical lenses based on empirical data.

Reflective Practice



Project Course

Computer Science Education

Software Engineering


Håkan Burden

RISE Research Institutes of Sweden

Jan-Philipp Steghöfer

University of Gothenburg

Agile and Lean Concepts for Teaching and Learning: Bringing Methodologies from Industry to the Classroom

978-981-13-2751-3 (ISBN)

Subject Categories


Other Computer and Information Science


Pedagogical Work

Learning and teaching

Pedagogical work



More information

Latest update