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...