Involves: Python, Pyxel, Django
In PyxelDesigner, students create a game in Python by completing incremental challenges that gradually build up to a fully functioning game. Working in pairs, students change their Python code for each challenge in order to satsify the conditions of that particular challenge. Upon completion, PyxelDesigner presents the instructor with a diff describing the students' changes; if the changes are correct, the instructor enters his/her password so the students can continue on to the next challenge.
The underlying game engine used by PyxelDesigner is Pyxel, a retro game engine for Python that is extremely well-written and self-contained with minimal dependencies. I've found that students are especially productive using Pyxel rather than engines like Pygame, which I attribute to Pyxel's simple yet attractive graphics scheme, plus its well-designed API that hides much of the complexity exposed by other engines. By incorporating Pyxel in PyxelDesigner, students are able to tangibly work in an area of great interest to them (game design) while being motivated to learn Python at a more advanced level so as to add more features to their game. Experience in the classroom has demonstrated that students have learned more and remembered more as a result.