Free Python Games Curriculum
============================

What follows are notes for a week-long curriculum developed for Maker Camp at
The River Church Community. Maker Camp was a summer day camp for Middle School
students in the California Bay Area.

- Each game has exercises at the top.
- Visualize code with http://pythontutor.com
- Extras: $ python3 -m turtledemo


Day 1
-----

- What is a computer? Calculator + Clock.
- Discuss Alan Turing and Turing Machines.
- Disucss John Von Neumann and Von Neumann Machines.
- What is a program? Computer Recipe.
- Introduce Terminal, black background, give the computer commands.
- Introduce Python Shell, white background, write Python statements.
- Activity: connect and decorate computers.
- Problem solving: divide and conquer.
- Statements: assignment, if/elif/else, while, import
- Data types: int, str
- Functions: print, help, int
- Modules: random

Games
.....

- guess.py - Guess number within range.

  - Explain: from random import randint
  - randint(...)
  - Variables
  - Equality
  - print(...)
  - Inequality
  - input(...)
  - int(...)
  - Increase range to 1,000 and guess the number.
  - Discuss method of guessing. That's an algorithm!

- snake.py - Classic arcade game.

Bible Story
...........

- Genesis 1 - God the Creator (Creation)

  1. What did God do at the beginning?
  2. What did God see in creation?
  3. What is special about people?
  4. Why do we create things?


Day 2
-----

- Activity: Blind partner obstacle course.
- Problem solving: brute-force.
- Famous Christian programmer: Donald Knuth
- Statements: try/except, for, def
- Data types: float, bool
- Functions: type, dir, str, ord, chr
- Modules: turtle

Games
.....

- crypto.py - Encrypt, decrypt and decode messages.

  - ord function and chr function
  - modulo operator
  - Write decode function
  - Encrypt numbers

- paint.py - Draw shapes.

  - Draw line
  - Draw square
  - for-statement, range function.
  - Draw five-pointed star: forward(50); right(144) (x5)
  - Draw six-pointed star: forward(50); left(60); forward(50); right(120) (x6)
  - help(...)
  - undo(...)
  - def-statement, refactor code to star function
  - color('green'); color('blue', 'yellow')
  - begin_fill(); end_fill()
  - width function
  - Write polygon(sides, length) function

- flappy.py - Flappy Bird inspired game.

Bible Story
...........

- Genesis 6:5-22 - God the Engineer (Noah)

  1. Why did God regret making people?
  2. How was Noah different?
  3. What was God's plan?
  4. How are we washed today?


Day 3
-----

- Activity: Simon Says
- Famous Christian programmer: Fred Brooks
- Functions: onscreenclick, onkey, ontimer

Games
.....

- bagels.py - Digit guessing puzzle.
- Animation

  - Draw arc: circle(100, 90)
  - flower(...)
  - Draw flower and rotate
  - ontimer(...)
  - hideturtle(); tracer(False); polygon(4, 200); update()

- tictactoe.py - Tic-tac-toe.

  - line(...)
  - grid(...)
  - drawx(...)
  - drawo(...)
  - floor(...)
  - onscreenclick(goto)

- simonsays.py - Simon Says
- cannon.py - Hitting targets with projectiles.

Bible Story
...........

- Mark 1:1-18 - God the Programmer ("fishers of people")

  1. What did Isaiah say would happen?
  2. What did John the Baptist say would happen?
  3. What did God say about Jesus? When?
  4. How did Jesus give his disciples new jobs?


Day 4
-----

- Activity: Collage of concepts.
- Famous Christian programmer: Larry Wall
- Data types: list, dict, vector

Games
.....

- bounce.py - Simple animation demo.
- pong.py - Classic arcade game.
- ant.py - Simple animation demo.
- tron.py - Classic arcade game.
- tiles.py - Puzzle game of number shuffling.

Bible Story
...........

* John 9:1-33 - God the Debugger (Blind Man and Jesus)

  1. What does Jesus tell the disciples?
  2. What does the man tell the Pharisees?
  3. What does the man believe about Jesus?
  4. What do you believe about Jesus?


Day 5
-----

- Activity: Make or modify your own game.
- Famous Christian programmer: Jon Skeet
- Answer: What next?

Games
.....

- connect.py - Connect Four
- memory.py - Puzzle game of number pairs.
- pacman.py - Classic arcade game.

Bible Story
...........

* Revelation 21 - God the Restorer (New Heaven and New Earth)

  1. What does God make? When?
  2. Who is the Lamb and the Bride?
  3. What is special about the city?
  4. How can we live in the Holy City?
