In teaching and training the next generation of software engineers, programming labs with students working together in small groups provide the opportunity to obtain hands-on experience for software projects involving multiple developers. However, more than other types of courses, programming labs face some challenges in providing a similar learning outcome for all students. Based on feedback and own experience from various iterations of the programming lab at TU Dortmund University, we identified that the learning ex-perience varies significantly due to heterogeneous prior knowledge, experience levels, and personality traits of both students and tutors. In this experience report, we present our approach towards aligning the learning experience by applying three different didactic im-provements based on well-studied concepts: (1) the idea of worked-out examples is transferred to teaching the software development process by providing a small software application with all corre-sponding artefacts like diagrams, program code and documentation, focusing on their relationships and development activities. (2) Goal-oriented and structured learning is used to define learning outcomes for every group meeting as a common ground, while audience re-sponse systems are utilized to motivate the attendance and allow students to self-reflect on their knowledge and competence level. (3) We harmonize the role of tutors by holding dedicated teaching workshops for tutors' responsibilities in the programming lab. The different approaches are evaluated based on surveys for stu-dents and tutors over three iterations of the programming lab at TU Dortmund University. Both sides' positive responses and feedback resulted in an enumeration of lessons learned as recommendations and support for other similar courses.
Malte Mauritz, Stefan Naujokat, Christian Riest
2022 IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation (SEENG)