I. Introduction (Heading 1)
Many students are dropping or skipping programming courses due to several challenging issues [1], [2] such as navigating program development environments, understanding programming structures, learning programming language syntax, designing programs to solve specific tasks, dividing functionality into procedures, and debugging their programs [1]–[3]. Traditional computer science education often emphasizes theoretical concepts, sometimes at the expense of practical experience or real-world projects [1]–[3]. This lack of hands-on experience can cause students to struggle with certain concepts or coding languages, leading to frustration. In response to this, the current digital age is transforming the education system in programming, with educators and students increasingly relying on flipped classrooms, collaborative learning, problem-based learning, adaptive learning, and gamification [4]–[9].