Extreme Programming with Python in the Classroom.notes

Wednesday, March 23, 2005

TITLE OF PAPER: Extreme Programming with Python in the Classroom
URL OF PRESENTATION: _URL_of_powerpoint_presentation_
PRESENTED BY: Michael Weigend
REPRESENTING: Holzkamp-Gesamtschule Witten

CONFERENCE: PyCon 2005
DATE: 3/23/2005
LOCATION: GWU Cafritz Conference Center, Grand Ballroom

--------------------------------------------------------------------------
REAL-TIME NOTES / ANNOTATIONS OF THE PAPER:
{If you've contributed, add your name, e-mail & URL at the bottom}

 * Teacher in german school system
 * No prior experience with XP
 * Starts with basic overview of XP
    stories, short interations, spikes, ...
 * Case study: 2 XP students in the classroom - Sprint 2005
   1 or 2 years programming experience w/ python

First step - Choose a Metaphor
    text editor - project for first group
      to allow a text editor for letters in a foreign language (English)
    chat room - project for second group
      for English conversation to practice the English language

second step - Release Planning
  * meet the customer
  * write stories
  * estimate implementation time
  * spikes

  - Meet the Customer
     They went to a primary school to meet the customer - young kids who are learning English as a foreign language
  Researching the Field - the students had to take the role of the customer to write the xp stories themselves as the teacher did not have time to assist them
  
  Writing Storeis (Customer)
    Story: GUI
    Graphical user interface with pulldown menu
    STory: bricks
    User can insert phrases to begin the letter
      Story: bricks_start
             bricks_about_me
             bricks_end
    Story:

  Exploring Predesigned Spikes
    discover, explore .... estimate implementation time
    
    discovering and exploring are how he described it to them using the example of being in a science museum
    
  Predesigned Spike - Example
    The created a simple python program and started to change the small program while timing it with their watches to find out how to estimate the amount of time to change the story
    
  First Iteration
    archectictual spike  --- block 1
                         +-- block 2   --- result of first iteration
                         +-- block 3
    implemented one story in three ways and picked the best result
    
  The result of the first spike was a basic text editor that they could then start adding new features such as a new menu bar item
  
  Second Iteration
    Things started getting more complicated because now they started working on different stories for each of the xp pairs -- then they had to integrate the whole thing.
    
  Test Driven Development (1)
      Programming = Experimenting
      
    two interesting ideas for teaching - you consider programming as experimenting
    example given is writing a loop and if it doesn't work, you change it until it works
    once it works you have implemented the story
    
    second idea is that it guarantees logical correctness - you use test cases and check arguments and test the module using asserts and other test driven paradigms so that when the story is completed you know it works
    The example given shows the test being created using DocTest
    
  Big Visible Charts
  
    The example given is a scene from Rosemary's Baby using a big chart to keep track people who where mean and then there was another example of Roman Planski keeping track of Mia Farrow's behavior...
    
  Visualizing the Progress
    The concept of documenting the progress was used by the students by keeping a big chart showing the progress of the stories and the number of tests that have been implmented.

  Coach's Big Visible Chart
  
    used by the coach to provide feedback and had three items
    
        distribution of work
        self-restriction to the plan
        BSCW
        
    more charts being shown on how each pair contributed to the project, how much documentation was generated, etc.
    
  The customer is obscure
    Who is the Customer?
  Project are always a success
    short iterations
    resistant to rigid time schedules
    
    they are always a success because even if you don't implement all of the features, the project works (even if it doesn't work well)
    
    XP Supports getting exerienced
    
    KentBeck: "Developement is learning"
    
QA

Q. how much background did they have before the started
A. between 1.5 and 2.5 years

Q. did the students understand refactoring
A. he thinks so, they changed the code to get better quality and to ensure naming consistenticy (sp?)

Q. how widely is python taught in the german school system
A. it is taught in other schools but not in many
    he also teaches future CS teachers and he shows them python and they are impressed

Q. with XP in the first iteration is often dealing with setting up the framework of XP itself
A. they did that with release planning - so they started to understand the scope of the project by having them actually start on small stories so they could get the feel of XP and iterate thru that

Q. How many years of coding instruction does a typical german student get
A. CS education is not compulsary - if they want they can have a maximum of 5 years (grades 9, 10 and 11-13)
   the 9 and 10th grades is minimal programming, more application training

Q. was the text editor project was ever used
A. not yet, after the holidays they will go to the school and try it


Questions:
  * Does having the students act as the customer affect the outcome of this case study?  Perhaps it might not have less validity as it doesn't follow some of the most important aspects of extreme programming.
  * Did they write tests before or after coding?

--------------------------------------------------------------------------
REFERENCES: {as documents / sites are referenced add them below}


--------------------------------------------------------------------------
QUOTES:



--------------------------------------------------------------------------
CONTRIBUTORS: {add your name, e-mail address and URL below}
nick.bastin@gmail.com <http://www.nickbastin.com>


--------------------------------------------------------------------------
E-MAIL BOUNCEBACK: {add your e-mail address separated by commas }


--------------------------------------------------------------------------
NOTES ON / KEY TO THIS TEMPLATE:
A headline (like a field in a database) will be CAPITALISED
    This differentiates from the text that follows
A variable that you can change will be surrounded by _underscores_
    Spaces in variables are also replaced with under_scores
    This allows people to select the whole variable with a simple double-click
A tool-tip is lower case and surrounded by {curly brackets / parentheses}
    These supply helpful contextual information.

--------------------------------------------------------------------------
Copyright shared between all the participants unless otherwise stated...