AGILE and TKP
About Teaching Kids Programming (TKP)
TKP is a group of methods and courseware designed by technical volunteers to introduce children to programming. TKP courseware is free and open source. The courseware is based on Agile programming techniques (in particular TKP courseware and teaching methods use many practices from the XP world) and on the Intentional Method. Llewellyn Falco and Lynn Langit founded TKP in 2010, combining their years of experience teaching both kids and adults to program. The materials are targeted for children ages 10 and up. The only prerequisite is that the children have basic keyboarding skills.
Here’s a short (15 minute video) of Lynn talking about TKP at the #140Edu con in NYC in July 2011
Using Agile Practices to Teach Programming
TKP instructional design is based on many Agile (and XP) best practices and principals. These include use of core Agile practices in the teaching (or delivery) of TKP courses. TKP courseware includes examples of using these practices in classroom situations and suggestions on how best to incorporate these practices into teaching children to program. They include the following:
* –Pair Programming – both the students and the teachers work in pairs to learn / teach TKP material
* –No Big Upfront Design – teachers are advised how to guide the student pairs to writing and executing their first program within 5 minutes of the start of each TKP class.
* –Test-driven development - courseware is written so that students can be guided to translate one line of English into one line of code and then to run (or execute) the result, so that pairs can observe whether they have successfully completed the translation. This is a type of visual test-driven development. Also the TKP teaching method advocates deleting the original English comments AFTER the line has been properly translated.
* –Sustainable pace – careful attention is paid by the instructors to the pace of the class. Student pairs are rotated (within pair) either on task completion or on a regular time interval (such as 5 minutes). Pairs are also switched at the end of each lesson (if that day’s class is a multi-lesson class), to further facilitate knowledge transfer.
* –Rapid Feedback. In addition to the immediate visual feedback that the children get after they run each line of code in the recipe, the TKP group advocates the use proctors (helpers) in the classroom to keep the pairs on pace. In addition to live proctors, the TKP courseware includes a Virtual Proctor, which provides visual feedback from all of the pairs to the instructors.
* –Craftsmanship – each recipe or lesson contains several sections (see below ‘About TKP Courseware’), so that students can master concepts taught, APIs and tools before being introduced to new concepts, tools and APIs.
About the Intentional Method of Teaching
The Intentional Method has been created by the founders of TKP. It is based on these core ideas:
*–New programmers should translate one line of English into one line of code at a time
*–New programmers should attempt to verify the result of each line of translation (by running which is a type of testing the code) after each line of translation
*–New programmers should use all means available in their tools (i.e. editor or IDE) and in their documentation to successfully translate each line of English into code. Student pairs are encouraged to use exploration of the the available APIs and language documentation available in whatever editor they are using to complete each line translation.
*–The courseware is offered is several domains – traditional programming languages, Microsoft Small Basic, Java, T-SQL and in other domains, such as visual programming environments such as Microsoft Kodu. It is the intent of the TKP group to continue to include other languages and domains in future courseware.
*–The courseware consists of 5 parts to each recipe or lesson. The parts are recipe, recap, variation, quiz and enrichment (or homework). The courseware design approach is explained in more detail in the next section of this article.
About TKP Courses
TKP coursework is designed to be modular. For Microsoft Small Basic and Java, there are up to 5 sections to each recipe (or lesson). On the TKP website, there are teacher training videos (example for SQUARE) for each section for some of the core recipes. Each recipe or lesson is created to teach up to three core programming concepts. Examples of such concepts are Objects, Properties, Keywords, For Loops, Events, etc…
*–The RECIPE is the first section – here the pairs are guided to create an output (starting with Logo-like drawings) which will teach them up to three programming concepts.
*–The RECAP is the second section. Here the pair instructors re-do (recap) the recipe so the the kids have time to digest what they have learned. This is based on the Agile idea of a retrospective.
*–The VARIATION is the third section. In this section the students do refactoring and then changing their code as led by the instructors.
*–The QUIZ is the forth section. In this facilitated section, the pairs complete a short quiz in the editor using the code (and concepts) that they have just learned.
*–The ENRICHMENT/XTRAS is the fifth section. Similar to the quiz, in this section, facilitated student pairs work on koans in their editor to further reinforce concepts learned. We were inspired to create TKP koans after working at an event for adult programmers where Ruby koans were being used to teach/learn a new programming language.
For a bit more about TKP theory, watch this 15 minute video of a talk Lynn did at ‘Super Happy Dev House’ in Mountain View, CA. Here is a link to the slides as well.
The TKP library consists of around 14 recipes or units at at the time of this writing. Future direction for the organization include completing all aspects of each recipe. They also include localizing recipes. Additionally, other technical volunteers have expressed intent to translate the courseware into other programming languages such as Ruby and Python. Work is also being done to add more recipes to the library, areas of focus for this task include adding recipes around the following domains: games, web applications and mobile applications. Finally there is work being done to add new types of recipes – particularly around the Kata format.
Here are the slides from our presentation at the international Agile2011 conference in Salt Lake City, Utah.
