Creativity is an action and has its roots embedded within the human beings. It follows that creativity is also a human capability. Furthermore, teachers are required to use creativity and teaching methods in a creative manner. This paper will approach teacher creativity and student creativity in learning programming through game-based learning. Game-based learning itself involves high order skills such as: problem solving, critical thinking and creativity. Computer programming is a very difficult subject and students face challenges in learning programming. There are a few strategies used in programming courses in Higher Education: learning to program by playing games, learning programming through game development and learning to program by the development of games for learning programming. This study conducted a comparative analysis. Further, data was collected by course evaluation and discussions with students and teachers. Findings indicate that the three approaches are beneficial for learning programming and have also a beneficial impact on student academic performance and increase student motivation. The authors recommended a combination of these three approaches with a traditional design for students enrolled on programming course. Finally, the authors designed a Model of learning for students enrolled on programming courses.