Game maker is pretty awesome.
When you start out and you have no Idea of how to make games, nor you know how to program, game maker is the perfect start, IMO.
You don’t need to tell your students what a main function is or what a game loop is. All that stuff isn’t there. Game maker was from the beginning on learning game technique algorithms and learning how math has to do with games: “How can I make my platform player jump and get pulled back from gravity?”. Those questions are answered with those totally awesome click! Oh of course! reactions. And those are awesome, everyone knows them. And that’s why I loved learning with game maker.
Later I switched to java mainly because I don’t know how to “access” game entities. In game maker it’s possible to get the nearest entity from relative to the entity you call the [icode]instance_nearest()[/icode] (iThink) function from and it’s also possible to save an entity you create from [icode]entity = instance_create()[/icode], but it doesn’t give you complete freedom, and back then I didn’t knew any other answers to that.
Also, game maker can be really slow. And actually that’s the main reason I switched.
TL;DR: Game maker is really the best thing for learning to program and especially learning how to program games.