This article presents a large-scale study which investigates students' reaction to game-based learning as part of programming courses. The study focuses on knowledge acquisition, learner experience, and game usability.Background: Despite the rapid growth of the information and communication technologies (ICTs) sector, the lack of engagement with science, technology, engineering, and mathematics (STEM) subjects and high dropout rates in computer science and engineering majors is linked directly to the large number of unfilled vacancies in the ICT employment market. To tackle one of the underlying causes for this crisis, (i.e., traditional teaching paradigms struggle to attract students to rather abstract and difficult STEM subjects such as programming), innovative technology-enhanced learning solutions are sought.Intended Outcomes: A set of serious games were proposed and designed to promote students' understanding of programming concepts, improve their confidence, stimulate their interest in STEM and increase engagement with the courses through vivid and appealing scenarios.Application Design: Targeting undergraduate and postgraduate students, the games focused on several key programming topics. They were designed to visualize the programming concepts in illustrative and entertaining scenarios. A comprehensive assessment methodology which includes surveys, observations, and interviews was employed to investigate the impact of the games.Findings: The results show that by using the games in the teaching and learning process all the students have benefited, although differently based on their location, educational backgrounds, and game played. The impact of detailed demographic aspects, such as participants' use of technology, their initial Manuscript