I was curious how ThePythonGameBook is already useful as a teaching tool.
Short answer: It is not very useful yet. While i got some valuable insights from teaching and working with the students it become clear to me that much work lay ahead of me. Also there is a huge difference between self-study where students set their own learning pace and classroom learning with limited time available, teacher to student ration of 1:20 or worse and constant fight for attention.
One of the benefits i got from doing the workshops were new game ideas and a stunning display of what students can make out of editing a simple labyrinth game. I will include some of their ideas into ThePythonGameBook.
Despite my worries that students may be confused about use of English language (not only is English used in the Python programming language, also ThePythonGameBook is not yet translated into German), this was not a great deal for the students. I showed the students how to use the offline-translator program ding but it was seldom used. If you program code for the first time in your life it does not matter if the programming language's keyword are not in your native language. English is learned in all Austrian schools and sometimes the student had better language skill than i had. I even have the theory that learning programming as a non native English speaker can be somewhat helpful because it allow you to name variables and comments in your local language (like German) and instantly see the difference to the (English) programming language keywords.“
My biggest problem while using ThePythonGameBook in teaching was to choose on what topic to concentrate in a given lesson, hoping to arise enough interest and code-awarness so that students will follow later the remaining chapters of ThePythonGameBook.
I choose to explain the basic principles of a pygame main loop as detailed in step002 in ThePythonGameBook. I also spent a lot of time to explain the concept of blitting (“imaging there is a gnome sitting behind the screen painting a picture and showing it to you…”) The remaining time i concentrated on introducing the basic pygame draw functions and to make sure that students were able to understand the coordinate system, look up (drawing) functions in the official pygame online documentation and were able to draw basic shapes (a face made out of circles for eyes etc.). At least that was the plan. Adding a bit user-generated events (keypress) and change background colour were advanced stages, usually when time (or learning patience of students) began to run out. In the end the students were able to produce a fancy looking screensaver-like graphic demo with limited user interaction.
For those teaching topics (drawing lines on screen, using coordinate system), python's turtle module would have been possible superior. My aim was to allow the students to modify full pygame programs later so i completely skipped teaching turtle graphics and started directly with pygame graphics. If lack of time is not an issue i would still recommend teachers to start with turtle graphics before moving toward pygame.
After those lessons i usually let the students read at their own pace in ThePythonGameBook, after explaining how to download, install, run and modify the example games.
I won some insights from teaching in the Austrian school's computer labs:
There is a blog entry in German language about my experience doing pygame workshops in public schools with lots of pictures on this address:
The blog entry focus more about the different linux versions used in the school.
Short version:It does not matter so much what kind of Linux version is used in teaching. What matters is having good teachers.