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