Lesson Plan
===========

Developed for Maker Camp 2017 at The River Church Community.

- Each game has exercises at the top.
- Extras: $ python -m turtledemo
- http://pythontutor.com


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.


Topics
......

- Statements: assignment, if/elif/else, while, import, try/except, for, def
- Data types: int, float, bool, str
- Functions: print, help, int, range


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

  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


Topics
......

- Statements: assignment, if/elif/else, while, import, try/except, for, def
- Data types: int, float, bool, str
- Functions: print, help, type, dir, int, str, ord, chr


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
  - hideturtle(); tracer(False); polygon(4, 200); update()

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

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


Games
.....

- bagels.py - Digit guessing puzzle.
- Animation

  - Draw arc: circle(100, 90)
  - flower(...)
  - Draw flower and rotate
  - ontimer(...)

- 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 ("fish for 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
-----

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


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 11:17-44 - God the Debugger

  1. What was wrong?
  2. How did Jesus feel?
  3. What did Jesus tell others?
  4. How did Jesus debug the scene?


Day 5
-----

- Activity: Make or modify your own game.
- Famous Christian programmer: Jon Skeet


Games
.....

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


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

* John - God the Debugger - Jesus Heals the Blind Man



* Revelation 21 - God the Recreator

  1. When does the new heaven and new earth occur?
  2. What is special about the new heaven and new earth?
  3. Who is the Lamb and the Bride?
  4. What is special about the city?
