SlideShare a Scribd company logo
PLATINUM)SPONSORS)

GOLD)SPONSORS)

SILVER)SPONSORS)

Saturday, May 4, 13
Teach your kids how to
program with Python
and the Raspberry Pi
Juan Gomez
Co-Founder of PyhtonKC
Twitter: @_juandg

Saturday, May 4, 13
May the 4th be with you!
Saturday, May 4, 13
So what is this talk really about?
Saturday, May 4, 13
Brief History of the RaspberryPi
More at: https://www.youtube.com/watch?v=z-j4USHTLWM
Saturday, May 4, 13
Saturday, May 4, 13
What you’ll
need:
• MicroUSB Power Supply
• SD Card (>= 4GB)
• USB Keyboard
• USB Mouse
• Ethernet Cable
• HDMI Cable
• Monitor
• Case?
• HDMI to VGA Adapter?
• USB WiFi Adapter?
• USB to TTL Cable?
• RCA Cable?
Saturday, May 4, 13
How do you teach
kids?

Saturday, May 4, 13
Make it fun!
http://www.adafruit.com/products/975
Saturday, May 4, 13
Some tips
• Seriously, Make it fun!
• Start with Math
• Be Patient
• Explain the Basics
• Use real life examples
• Kids are slow typists!
Saturday, May 4, 13
How do I set it up?

Saturday, May 4, 13
Saturday, May 4, 13
Disclaimer
• This an intro to Python for YOU, not your
kids.

• The kids version is at: https://github.com/
mechanicalgirl/young-coders-tutorial

Saturday, May 4, 13
A Python Code Sample
x = 34 - 23
# A comment.
y = “Hello”
# Another one.
z = 3.45
if z == 3.45 or y == “Hello”:
x = x + 1
y = y + “ World”
# String concat.
print x
print y

Saturday, May 4, 13
Enough to Understand the Code
• First assignment to a variable creates it
• Assignment is = and comparison is ==
• For numbers + - * / % are as expected
• Special use:
• + for string concatenation
• % for string formatting (as in C’s printf)

• Logical operators are words (and, or, not)
not symbols (&&, ||, !).
• The basic printing command is print

Saturday, May 4, 13
Comments
• Start comments with #, rest of line is ignored
• Can include a “documentation string” as the first
line of a new function or class you define
• Development environments, debugger, and other
tools use it: it’s good style to include one
def my_function(x, y):
“““This is the docstring. This
function does blah blah blah.”””
# The code would go here...

Saturday, May 4, 13
Python and Types

• Everything is an object!
• “Dynamic Typing”->
• “Strong Typing” ->
x = “the answer is ”
y = 23
print x + y

Saturday, May 4, 13

Data types determined automatically.
Enforces them after it figures them out.

# Decides x is string.

# Decides y is integer.
# Python will complain about this.
Basic Datatypes
• Integers (default for numbers)
•z = 5 / 2 # Answer 2, integer division

• Floats
•x = 3.456

• Strings
• Can use “” or ‘’ to specify with “abc” == ‘abc’
• Unmatched can occur within the string: “matt’s”
• Use triple double-quotes for multi-line strings or strings that
contain both ‘ and “ inside of them:
“““a‘b“c”””

Saturday, May 4, 13
Whitespace
Whitespace is meaningful in Python: especially
indentation and placement of newlines
•Use a newline to end a line of code
Use  when must go to next line prematurely

•No braces {} to mark blocks of code, use
consistent indentation instead
• First line with less indentation is outside of the block
• First line with more indentation starts a nested block

•Colons start of a new block in many constructs,
e.g. function definitions, then clauses

Saturday, May 4, 13
Assignment

•You can assign to multiple names at the
same time
>>> x, y = 2, 3
>>> x
2
>>> y
3

This makes it easy to swap values
>>> x, y = y, x

•Assignments can be chained
>>> a = b = x = 2
Saturday, May 4, 13
A Python Code Sample
x = 34 - 23
# A comment.
y = “Hello”
# Another one.
z = 3.45
if z == 3.45 or y == “Hello”:
x = x + 1
y = y + “ World”
# String concat.
print x
print y

Saturday, May 4, 13
Side by Side with Java
Java (C#)
public class Employee
{
private String myEmployeeName;
private int
myTaxDeductions = 1;
private String myMaritalStatus = "single";

Python
class Employee():

def __init__(self,

public Employee(String EmployeName)
{
this(EmployeName, 1);
}

employeeName

public Employee(String EmployeName, int taxDeductions)
{
this(EmployeName, taxDeductions, "single");
}
public Employee(String EmployeName,
int taxDeductions,
String maritalStatus)
{
this.myEmployeeName
= EmployeName;
this.myTaxDeductions
= taxDeductions;
this.myMaritalStatus
= maritalStatus;
}

):

}

Saturday, May 4, 13

, taxDeductions=1
, maritalStatus="single"

self.employeeName

= employeeName

self.taxDeductions

= taxDeductions

self.maritalStatus

= maritalStatus
Life is Short
(You Need Python)
- Bruce Eckel (Thinking in C++)

Saturday, May 4, 13
Useful books:
Python for Kids
http://oreil.ly/10boyUq
The Quick Python Book, 2nd Ed
http://amzn.to/lXKzH5

Google's Python Class
https://developers.google.com/edu/python/

Saturday, May 4, 13
Let’s start by writing
text based games

Saturday, May 4, 13
Saturday, May 4, 13
A Skeleton
• Let’s start with the most basic pygame program
template.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

from pygame import *
from pygame.sprite import *
from random import *
init()
screen = display.set_mode((640, 480))
display.set_caption('Window name!')
while True:
e = event.poll()
if e.type == QUIT:
quit()
break

Saturday, May 4, 13

screen.fill(Color("white"))
display.update()
Surface
• Most of the game elements you see are represented as
Surface
• display.set_mode((x, y)) creates your canvas – it
returns a Surface object
Useful surface methods:
• fill("color") fills the surface object it's been called from
• blit(surface, area) paints the source surface onto the
rectangle bounded by the area tuple
– Example: screen.blit(ball, (50,50))
Saturday, May 4, 13
Rect
• Objects that store rectangular coordinates
• Call .get_rect()on a surface to get its bounding box
Rectangle methods/variables:
• .center holds the object's center as a tuple
• .colliderect(target) returns True if the parameter
overlaps with the object
• .collidepoint(target) returns True if the target point
overlaps with the object
Saturday, May 4, 13
Media
• Loading an image:
– img = image.load("file.gif").convert()

• Getting a bounding rectangle:
– img_rect = img.get_rect()

• Loading and playing a sound file:
– mixer.Sound("file.wav").play()

Saturday, May 4, 13
Sprite
• Simple base class visible game objects inherit from.
Ball.py
1
2
3
4
5
6
7
8
9
10
11

from pygame import *
from pygame.sprite import *
class Ball(Sprite):
def __init__(self):
Sprite.__init__(self)
self.image = image.load("ball.png").convert()
self.rect = self.image.get_rect()

Saturday, May 4, 13

def update(self):
self.rect.center = mouse.get_pos()
Using Sprites
• They're just objects: initialize them
– ball = Ball()

• Create a group of sprites in main
– sprites = RenderPlain(sprite1, sprite2)

• Groups know how to draw and update
– sprites.update()
– sprites.draw(surface)

Saturday, May 4, 13
Events
• User input such as clicking, moving mouse or key presses
• Add more branches to test the result of event.poll()
• Events to test for:
– QUIT
– MOUSEBUTTONDOWN
– JOYBUTTONDOWN

• Testing for the letter ‘d’ being pressed using KEYDOWN
if e.type == KEYDOWN:
if e.key == K_d:
…

Saturday, May 4, 13
Adding Text
• f = font.Font(font, size) goes before your game loop
– Example: f = font.Font(None, 25)
– Usually, None is a good enough font!

• text = Font.render(text, antialias, color)
– Example: text = f.render("Hello!", True,
Color("green"))
– Returns a surface

• Must be blit, just like any other surface
– Example: screen.blit(t, (320, 0))

Saturday, May 4, 13
Let’s dissect a game!

Saturday, May 4, 13
Join PythonKC -> http://
www.meetup.com/pythonkc/
Saturday, May 4, 13
Thanks!
Juan Gomez
Co-Founder of PyhtonKC
Twitter: @_juandg

Saturday, May 4, 13
PLATINUM)SPONSORS)

GOLD)SPONSORS)

SILVER)SPONSORS)

Saturday, May 4, 13

More Related Content

ODP
Introduction to Python - Training for Kids
PDF
Python Tutorial | Python Tutorial for Beginners | Python Training | Edureka
PPTX
Python 101: Python for Absolute Beginners (PyTexas 2014)
PPSX
Programming with Python
PPTX
Polymorphism in Python
PDF
Introduction to python
PDF
Python Basics
PDF
What is Python? | Edureka
Introduction to Python - Training for Kids
Python Tutorial | Python Tutorial for Beginners | Python Training | Edureka
Python 101: Python for Absolute Beginners (PyTexas 2014)
Programming with Python
Polymorphism in Python
Introduction to python
Python Basics
What is Python? | Edureka

What's hot (20)

PPTX
Presentation on python
PDF
Python Intro
PPTX
Print input-presentation
PPTX
Abstract class in c++
PDF
Python If Else | If Else Statement In Python | Edureka
PPTX
Introduction to Python programming
PDF
Immutable vs mutable data types in python
PPTX
Chapter 06 constructors and destructors
PPTX
Conditional and control statement
PPTX
Python - Numpy/Pandas/Matplot Machine Learning Libraries
PPTX
Chapter 03 python libraries
PPT
Python ppt
PPT
Python Programming Language
PPTX
Python Functions
PPSX
C++ Programming Language
PDF
Introduction to python programming
PPTX
Machine learning with scikitlearn
PPTX
Object oriented programming with python
PDF
Python Generators
PDF
Variables & Data Types In Python | Edureka
Presentation on python
Python Intro
Print input-presentation
Abstract class in c++
Python If Else | If Else Statement In Python | Edureka
Introduction to Python programming
Immutable vs mutable data types in python
Chapter 06 constructors and destructors
Conditional and control statement
Python - Numpy/Pandas/Matplot Machine Learning Libraries
Chapter 03 python libraries
Python ppt
Python Programming Language
Python Functions
C++ Programming Language
Introduction to python programming
Machine learning with scikitlearn
Object oriented programming with python
Python Generators
Variables & Data Types In Python | Edureka
Ad

Viewers also liked (20)

PDF
Python for the C# developer
PPTX
Python Programming Essentials - M2 - Introduction to Python
KEY
From Prospect To Production In 30 Days
PPTX
java programming basics - part ii
KEY
Python Is Rad
PDF
“Learn the fundamental of programming with animals and robots” - Edu 3.4
PDF
Modernize your existing teaching materials through Office 365
PDF
“Performance Analytics and Assessment for Learning” - Edu 3.4
PDF
Intro to Python
PPTX
Teaching Kids Programming using Agile Practices
PDF
Kids liketocode
PDF
「有機上網」了,然後呢? - Edu 3.4
PDF
"Google雲端學習:跳出校園輕鬆教學" - Edu 3.4
PDF
共享創意知多D及如何利用共享創意分享教材與創作 - 校本經驗分享 - Edu 3.4
PDF
CON 3431 - Introducing Java Programming to Kids
PDF
Hour of code computer science class
PDF
Learning with Lenovo - Edu 3.4
PPT
Ch 30 Nature of theAtom
PDF
“Can we deface your Web in 10 mins?” - Edu 3.4
PDF
Intro to Python
Python for the C# developer
Python Programming Essentials - M2 - Introduction to Python
From Prospect To Production In 30 Days
java programming basics - part ii
Python Is Rad
“Learn the fundamental of programming with animals and robots” - Edu 3.4
Modernize your existing teaching materials through Office 365
“Performance Analytics and Assessment for Learning” - Edu 3.4
Intro to Python
Teaching Kids Programming using Agile Practices
Kids liketocode
「有機上網」了,然後呢? - Edu 3.4
"Google雲端學習:跳出校園輕鬆教學" - Edu 3.4
共享創意知多D及如何利用共享創意分享教材與創作 - 校本經驗分享 - Edu 3.4
CON 3431 - Introducing Java Programming to Kids
Hour of code computer science class
Learning with Lenovo - Edu 3.4
Ch 30 Nature of theAtom
“Can we deface your Web in 10 mins?” - Edu 3.4
Intro to Python
Ad

Similar to Teach your kids how to program with Python and the Raspberry Pi (20)

PDF
Python_book.pdf
PDF
Python
PDF
PDF
Java for beginners
PDF
Scalable JavaScript
PDF
Introduction to Python and Web Programming
PPTX
Unit-4 PPTs.pptx
PPTX
Functions, List and String methods
PDF
Python utan-stodhjul-motorsag
PPTX
2015 bioinformatics python_io_wim_vancriekinge
ODP
Dynamic Python
PDF
Ruby Programming Assignment Help
PDF
Ruby Programming Assignment Help
PPTX
Python for beginner, learn python from scratch.pptx
PPT
Bucc Toy Project: Learn programming through Game Development
PDF
Fuzzing - Part 1
PDF
Sustainable TDD
PPTX
Java Module 2 -Vikas.pptx About Java Programming
Python_book.pdf
Python
Java for beginners
Scalable JavaScript
Introduction to Python and Web Programming
Unit-4 PPTs.pptx
Functions, List and String methods
Python utan-stodhjul-motorsag
2015 bioinformatics python_io_wim_vancriekinge
Dynamic Python
Ruby Programming Assignment Help
Ruby Programming Assignment Help
Python for beginner, learn python from scratch.pptx
Bucc Toy Project: Learn programming through Game Development
Fuzzing - Part 1
Sustainable TDD
Java Module 2 -Vikas.pptx About Java Programming

More from Juan Gomez (6)

PDF
App Indexing: Blurring the Lines Between Your Website and App
PDF
REST is not enough: Using Push Notifications to better support your mobile cl...
PDF
Beating Android Fragmentation
PDF
Effective Android Messaging
KEY
Android Scripting
KEY
Gae icc fall2011
App Indexing: Blurring the Lines Between Your Website and App
REST is not enough: Using Push Notifications to better support your mobile cl...
Beating Android Fragmentation
Effective Android Messaging
Android Scripting
Gae icc fall2011

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
Spectroscopy.pptx food analysis technology
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Machine learning based COVID-19 study performance prediction
PPT
Teaching material agriculture food technology
PDF
KodekX | Application Modernization Development
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
“AI and Expert System Decision Support & Business Intelligence Systems”
Dropbox Q2 2025 Financial Results & Investor Presentation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Programs and apps: productivity, graphics, security and other tools
Spectroscopy.pptx food analysis technology
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Reach Out and Touch Someone: Haptics and Empathic Computing
Machine learning based COVID-19 study performance prediction
Teaching material agriculture food technology
KodekX | Application Modernization Development
MYSQL Presentation for SQL database connectivity
Review of recent advances in non-invasive hemoglobin estimation
Diabetes mellitus diagnosis method based random forest with bat algorithm
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Understanding_Digital_Forensics_Presentation.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

Teach your kids how to program with Python and the Raspberry Pi

  • 2. Teach your kids how to program with Python and the Raspberry Pi Juan Gomez Co-Founder of PyhtonKC Twitter: @_juandg Saturday, May 4, 13
  • 3. May the 4th be with you! Saturday, May 4, 13
  • 4. So what is this talk really about? Saturday, May 4, 13
  • 5. Brief History of the RaspberryPi More at: https://www.youtube.com/watch?v=z-j4USHTLWM Saturday, May 4, 13
  • 7. What you’ll need: • MicroUSB Power Supply • SD Card (>= 4GB) • USB Keyboard • USB Mouse • Ethernet Cable • HDMI Cable • Monitor • Case? • HDMI to VGA Adapter? • USB WiFi Adapter? • USB to TTL Cable? • RCA Cable? Saturday, May 4, 13
  • 8. How do you teach kids? Saturday, May 4, 13
  • 10. Some tips • Seriously, Make it fun! • Start with Math • Be Patient • Explain the Basics • Use real life examples • Kids are slow typists! Saturday, May 4, 13
  • 11. How do I set it up? Saturday, May 4, 13
  • 13. Disclaimer • This an intro to Python for YOU, not your kids. • The kids version is at: https://github.com/ mechanicalgirl/young-coders-tutorial Saturday, May 4, 13
  • 14. A Python Code Sample x = 34 - 23 # A comment. y = “Hello” # Another one. z = 3.45 if z == 3.45 or y == “Hello”: x = x + 1 y = y + “ World” # String concat. print x print y Saturday, May 4, 13
  • 15. Enough to Understand the Code • First assignment to a variable creates it • Assignment is = and comparison is == • For numbers + - * / % are as expected • Special use: • + for string concatenation • % for string formatting (as in C’s printf) • Logical operators are words (and, or, not) not symbols (&&, ||, !). • The basic printing command is print Saturday, May 4, 13
  • 16. Comments • Start comments with #, rest of line is ignored • Can include a “documentation string” as the first line of a new function or class you define • Development environments, debugger, and other tools use it: it’s good style to include one def my_function(x, y): “““This is the docstring. This function does blah blah blah.””” # The code would go here... Saturday, May 4, 13
  • 17. Python and Types • Everything is an object! • “Dynamic Typing”-> • “Strong Typing” -> x = “the answer is ” y = 23 print x + y Saturday, May 4, 13 Data types determined automatically. Enforces them after it figures them out. # Decides x is string. # Decides y is integer. # Python will complain about this.
  • 18. Basic Datatypes • Integers (default for numbers) •z = 5 / 2 # Answer 2, integer division • Floats •x = 3.456 • Strings • Can use “” or ‘’ to specify with “abc” == ‘abc’ • Unmatched can occur within the string: “matt’s” • Use triple double-quotes for multi-line strings or strings that contain both ‘ and “ inside of them: “““a‘b“c””” Saturday, May 4, 13
  • 19. Whitespace Whitespace is meaningful in Python: especially indentation and placement of newlines •Use a newline to end a line of code Use when must go to next line prematurely •No braces {} to mark blocks of code, use consistent indentation instead • First line with less indentation is outside of the block • First line with more indentation starts a nested block •Colons start of a new block in many constructs, e.g. function definitions, then clauses Saturday, May 4, 13
  • 20. Assignment •You can assign to multiple names at the same time >>> x, y = 2, 3 >>> x 2 >>> y 3 This makes it easy to swap values >>> x, y = y, x •Assignments can be chained >>> a = b = x = 2 Saturday, May 4, 13
  • 21. A Python Code Sample x = 34 - 23 # A comment. y = “Hello” # Another one. z = 3.45 if z == 3.45 or y == “Hello”: x = x + 1 y = y + “ World” # String concat. print x print y Saturday, May 4, 13
  • 22. Side by Side with Java Java (C#) public class Employee { private String myEmployeeName; private int myTaxDeductions = 1; private String myMaritalStatus = "single"; Python class Employee(): def __init__(self, public Employee(String EmployeName) { this(EmployeName, 1); } employeeName public Employee(String EmployeName, int taxDeductions) { this(EmployeName, taxDeductions, "single"); } public Employee(String EmployeName, int taxDeductions, String maritalStatus) { this.myEmployeeName = EmployeName; this.myTaxDeductions = taxDeductions; this.myMaritalStatus = maritalStatus; } ): } Saturday, May 4, 13 , taxDeductions=1 , maritalStatus="single" self.employeeName = employeeName self.taxDeductions = taxDeductions self.maritalStatus = maritalStatus
  • 23. Life is Short (You Need Python) - Bruce Eckel (Thinking in C++) Saturday, May 4, 13
  • 24. Useful books: Python for Kids http://oreil.ly/10boyUq The Quick Python Book, 2nd Ed http://amzn.to/lXKzH5 Google's Python Class https://developers.google.com/edu/python/ Saturday, May 4, 13
  • 25. Let’s start by writing text based games Saturday, May 4, 13
  • 27. A Skeleton • Let’s start with the most basic pygame program template.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 from pygame import * from pygame.sprite import * from random import * init() screen = display.set_mode((640, 480)) display.set_caption('Window name!') while True: e = event.poll() if e.type == QUIT: quit() break Saturday, May 4, 13 screen.fill(Color("white")) display.update()
  • 28. Surface • Most of the game elements you see are represented as Surface • display.set_mode((x, y)) creates your canvas – it returns a Surface object Useful surface methods: • fill("color") fills the surface object it's been called from • blit(surface, area) paints the source surface onto the rectangle bounded by the area tuple – Example: screen.blit(ball, (50,50)) Saturday, May 4, 13
  • 29. Rect • Objects that store rectangular coordinates • Call .get_rect()on a surface to get its bounding box Rectangle methods/variables: • .center holds the object's center as a tuple • .colliderect(target) returns True if the parameter overlaps with the object • .collidepoint(target) returns True if the target point overlaps with the object Saturday, May 4, 13
  • 30. Media • Loading an image: – img = image.load("file.gif").convert() • Getting a bounding rectangle: – img_rect = img.get_rect() • Loading and playing a sound file: – mixer.Sound("file.wav").play() Saturday, May 4, 13
  • 31. Sprite • Simple base class visible game objects inherit from. Ball.py 1 2 3 4 5 6 7 8 9 10 11 from pygame import * from pygame.sprite import * class Ball(Sprite): def __init__(self): Sprite.__init__(self) self.image = image.load("ball.png").convert() self.rect = self.image.get_rect() Saturday, May 4, 13 def update(self): self.rect.center = mouse.get_pos()
  • 32. Using Sprites • They're just objects: initialize them – ball = Ball() • Create a group of sprites in main – sprites = RenderPlain(sprite1, sprite2) • Groups know how to draw and update – sprites.update() – sprites.draw(surface) Saturday, May 4, 13
  • 33. Events • User input such as clicking, moving mouse or key presses • Add more branches to test the result of event.poll() • Events to test for: – QUIT – MOUSEBUTTONDOWN – JOYBUTTONDOWN • Testing for the letter ‘d’ being pressed using KEYDOWN if e.type == KEYDOWN: if e.key == K_d: … Saturday, May 4, 13
  • 34. Adding Text • f = font.Font(font, size) goes before your game loop – Example: f = font.Font(None, 25) – Usually, None is a good enough font! • text = Font.render(text, antialias, color) – Example: text = f.render("Hello!", True, Color("green")) – Returns a surface • Must be blit, just like any other surface – Example: screen.blit(t, (320, 0)) Saturday, May 4, 13
  • 35. Let’s dissect a game! Saturday, May 4, 13
  • 36. Join PythonKC -> http:// www.meetup.com/pythonkc/ Saturday, May 4, 13
  • 37. Thanks! Juan Gomez Co-Founder of PyhtonKC Twitter: @_juandg Saturday, May 4, 13