I must admit being impressed by this assignment. As a means of teaching the prerequsite syntax and basic semantics of a language required by any new student of programming, I find this approach very promising.
However I find your attempt to associate it with Extreme Programming a bit of a misnomer. I would have considered it more accurately described as "Guided Stepwise Refinement". Granted this wouldn't have been as sexy, but then again fundamental computer science rarely is ;).
Still it is how you have managed to introduce stepwise refinement as a core element of the *first* assignment that most impresses me. As a core cognitive tool required of all programmers, a mechanism to make it truely pervasive throughout an entire introductory course is an achivement in itself. Congratulations.
Now I eagerly await your introductions to abstraction, generalisation, and decompostition, which to my mind complete the core cognitive skills that we should be attempting to teach in an introductory course.