0
Easy as Pie?      Teaching Code LiteracySarah Allen@ultrasaurus
Coding Literacy
Sarah Allen@ultrasaurus
Sarah Allen@ultrasaurus
Why?Pie: the language Teaching Kids
Why?Pie: the language Teaching Kids
Why? Pie: the languageLearning from Kids
Why me?Why teach kids to code?Why create a language?     Why Ruby?
AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!    IntrinsicAWESOME!!!!!!!!!!!!!   GratificationAWESOME!!!!!!!!!!!!!AWESOME!!!!!!!...
IntrinsicGratification
Results
Results
AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AW...
Why teach kids code?•   Software is part of how our world works•   Skill for thinking & communicating•   Before they start...
language?
Small codeBig effectSimple syntax
“real” language
Domain Specific Language Domain = Web Games  http://pie-bakery.heroku.com/
Pie: the language•   What is Pie?    (demo)•   How do you make Pie?    (the code)
place
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
place(park:"You are in a park...")place(trees:"You are in a Japanese garden.")place(river_edge:"The path ends at a river")...
place(:park => "You are in a park...")place(:trees => "You are in a Japanese garden.place(:river_edge => "The path ends at...
place(park:"You are in a park...")place(trees:"You are in a Japanese garden.")place(river_edge:"The path ends at a river")...
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
Metaprogramming
Ruby Techniques             used in the Pie DSL• method_missing• blocks with instance_eval
pie game.pieFile.open(pie_file) do |f|end
pie game.pieFile.open(pie_file) do |f|  new_pie.instance_eval do      eval(f.read)end
place park:"You are...def place(options)  Place.new(places, options)end
park.path trees:northdef method_missing(name)    ...end
park.path trees:northdef method_missing(name)    place = places[name]    ...
park.path trees:northclass Place def path   ...
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"pla...
Tech Notes• Sinatra web app  http://www.sinatrarb.com/• Rails IDE  http://rubyonrails.org/• Rhodes mobile apps  http://rho...
What I Learned• Installation is boring• Teach Different Things  language, environments, physical computing• Seek Immediate...
Next Steps• Snazzier games• Create a path to writing more code• IDE improvements
https://github.com/blazingcloud/pie                gem install pie https://github.com/blazingcloud/pie-bakery        http:...
Teaching code literacy
Teaching code literacy
Teaching code literacy
Teaching code literacy
Teaching code literacy
Upcoming SlideShare
Loading in...5
×

Teaching code literacy

1,255

Published on

Teaching Code Literacy: slides for a talk at Strange Loop 2011

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,255
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Teaching code literacy"

  1. 1. Easy as Pie? Teaching Code LiteracySarah Allen@ultrasaurus
  2. 2. Coding Literacy
  3. 3. Sarah Allen@ultrasaurus
  4. 4. Sarah Allen@ultrasaurus
  5. 5. Why?Pie: the language Teaching Kids
  6. 6. Why?Pie: the language Teaching Kids
  7. 7. Why? Pie: the languageLearning from Kids
  8. 8. Why me?Why teach kids to code?Why create a language? Why Ruby?
  9. 9. AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!! IntrinsicAWESOME!!!!!!!!!!!!! GratificationAWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!
  10. 10. IntrinsicGratification
  11. 11. Results
  12. 12. Results
  13. 13. AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!AWESOME!!!!!!!!!!!!!
  14. 14. Why teach kids code?• Software is part of how our world works• Skill for thinking & communicating• Before they start believing they can’t• By high school some will outpace adults
  15. 15. language?
  16. 16. Small codeBig effectSimple syntax
  17. 17. “real” language
  18. 18. Domain Specific Language Domain = Web Games http://pie-bakery.heroku.com/
  19. 19. Pie: the language• What is Pie? (demo)• How do you make Pie? (the code)
  20. 20. place
  21. 21. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."
  22. 22. place(park:"You are in a park...")place(trees:"You are in a Japanese garden.")place(river_edge:"The path ends at a river")place(in_the_river:"You walk into the riverand drown.")
  23. 23. place(:park => "You are in a park...")place(:trees => "You are in a Japanese garden.place(:river_edge => "The path ends at a riverplace(:in_the_river => "You walk into the riveand drown.")
  24. 24. place(park:"You are in a park...")place(trees:"You are in a Japanese garden.")place(river_edge:"The path ends at a river")place(in_the_river:"You walk into the riverand drown.")
  25. 25. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."
  26. 26. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."park.path trees:north, river_edge:eastriver_edge.path in_the_river:east!
  27. 27. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."park.path trees:north, river_edge:eastriver_edge.path in_the_river:east!
  28. 28. Metaprogramming
  29. 29. Ruby Techniques used in the Pie DSL• method_missing• blocks with instance_eval
  30. 30. pie game.pieFile.open(pie_file) do |f|end
  31. 31. pie game.pieFile.open(pie_file) do |f| new_pie.instance_eval do eval(f.read)end
  32. 32. place park:"You are...def place(options) Place.new(places, options)end
  33. 33. park.path trees:northdef method_missing(name) ...end
  34. 34. park.path trees:northdef method_missing(name) place = places[name] ...
  35. 35. park.path trees:northclass Place def path ...
  36. 36. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."park.path trees:north, river_edge:eastriver_edge.path in_the_river:east!
  37. 37. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."park.path trees:north, river_edge:eastriver_edge.path in_the_river:east!
  38. 38. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."park.path trees:north, river_edge:eastriver_edge.path in_the_river:east!
  39. 39. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."park.path trees:north, river_edge:eastriver_edge.path in_the_river:east!
  40. 40. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."park.path trees:north, river_edge:eastriver_edge.path in_the_river:east!
  41. 41. place park:"You are in a park..."place trees:"You are in a Japanese garden."place river_edge:"The path ends at a river"place in_the_river:"You walk into the riverand drown."park.path trees:north, river_edge:eastriver_edge.path in_the_river:east!trees.path river_edge:"go through the trees"
  42. 42. Tech Notes• Sinatra web app http://www.sinatrarb.com/• Rails IDE http://rubyonrails.org/• Rhodes mobile apps http://rhomobile.com/
  43. 43. What I Learned• Installation is boring• Teach Different Things language, environments, physical computing• Seek Immediate Gratification• Errors are part of the user experience
  44. 44. Next Steps• Snazzier games• Create a path to writing more code• IDE improvements
  45. 45. https://github.com/blazingcloud/pie gem install pie https://github.com/blazingcloud/pie-bakery http://pie-bakery.heroku.com https://github.com/blazingcloud/mobile-pie rake run:iphone rake run:android @ultrasaurushttp://teachingkids.railsbridge.org/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×