In June 2010 i hold Python/Pygame workshops in three different schools in Austria. All schools were using some kind of Linux for their computer labs.
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.
English instruction manual
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.
What to teach if time is limited ?
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:
- It is hard to teach lot (of stuff) to lots (of students). Without the students self-helping each other it become next to impossible.
- Time (used for teaching instead for fighting with hardware/software/discipline) is the most critical aspect when preparing a computer lab lession
- Not using sprites is only helpful at the very beginning of pygame examples. Students want games, and games want sprites. I will have to re-write some early code examples using sprites, maybe showing one variant without sprites to explain a topic (like rotating a surface) and then showing it with use of sprites to make it useful for students games
- A special ThePythonGameBook teaching edition with prepared 1-hour-lessions for computer lab teachers, tests and tasks would make sense. Maybe as an commercial upgrade, have to think about it.
- My respect for teachers in public schools is growing. Teaching a class full of screaming students is hard work. The Austrian saying about teachers is: “Before noon he is right, after noon he is free.” I must add: and tired
- There is still a huge gap between my code examples from ThePythonGameBook and typical “real” games from sites like pyweek or pygame. Have to think about how to teach the splitting of a game project into smaller code modules files (menu, physic, levels, multiplayer etc.).
blog entry (in German language)
There is a blog entry in German language about my experience doing pygame workshops in public schools with lots of pictures on this address:
http://spielendprogrammieren.wordpress.com/2010/07/26/gute-lehrer-braucht-das-land-linux-in-schulen/. 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.