information Article Teaching Software Engineering Topics Through Pedagogical Game Design Patterns: An Empirical Study Nuno Flores 1,2,*,† , Ana C. R. Paiva 1,2,† and Nuno Cruz 1,† 1 Faculty of Engineering, University of Porto, 4200-465 Porto, Portugal; apaiva@fe.up.pt (A.C.R.P.); ei10082@fe.up.pt (N.C.) 2 INESC-TEC, 4200-465 Porto, Portugal * Correspondence: nuno.flores@fe.up.pt Current address: Rua Dr. Roberto Frias, s/n 4200-465 Porto Portugal. Received: 30 January 2019; Accepted: 9 March 2020; Published: 12 March 2020   Abstract: Teaching software engineering in its many different forms using traditional teaching methods is difficult. Serious games can help overcome these challenges because they allow real situations to be simulated. However, the development of serious games is not easy and, although there are good practices for relating game design patterns to teaching techniques, there is no methodology to support its use in a specific context such as software engineering. This article presents a case study to validate a methodology that links the Learning and Teaching Functions (LTF) to the Game Design Patterns (PIB) in the context of Software Engineering Education. A serious game was developed from scratch using this methodology to teach software estimation (a specific topic of software engineering). An experiment was carried out to validate the effectiveness of the game by comparing the results of two different groups of students. The results indicate that the methodology can help to develop effective educational games on specific learning topics. Keywords: software engineering education; game design patterns; pedagogy; educational games 1. Introduction Software Engineering (SE) is a discipline concerned with all aspects of software production, from the early stages of the system specification to post-delivery maintenance [1]. Its scope is so broad that the IEEE has proposed an organisational structure (known as Swebok [2]), where it is possible to find all the necessary skills that a proficient software engineer must master, for example, requirements, design, testing, management, process and so on. Using traditional teaching methods in this diverse and extensive context may not be the best way to train professionals capable of assuming positions of responsibility in organisations. In existing learning and teaching techniques, suitable for learning SE [36] topics and concepts, serious games are one of these techniques. The use of serious games can help improve the capture and understanding of SE knowledge. However, the design of such games tends to be complex, preventing their use on a larger scale [7]. Designing a successful entertainment game does not always mean an effective and appropriate educational game, geared towards specific learning objectives. When it comes to learning SE topics, designing these games is not a trivial task. Estimating the software design effort is an important topic to be mastered by a software engineer. Most project surpluses are caused by a bad estimate [8], which increases the risk of project failure. With the growing adherence to more agile and iterative development processes, estimation becomes an increasingly recurrent task, increasing its potential impact on project management. Therefore, it is Information 2020, 11, 153; doi:10.3390/info11030153 www.mdpi.com/journal/information