Great pedagogy for programming and even mathematics.
Developed by MIT, Scratch is the current favorite programming tool of mine for teaching programming to much younger children.
It used to be Logo. Which I think is still a good teaching tool.
But who could beat MIT. It's easy to pick up, drag and drop, fun.
Though unlike other subjects' tutorials, Scratch's tutorial is one not easy to find online at this time. A good website for learning Scratch: http://learnscratch.org/.
There is a book promoted by Slashdot (one could browse through its rich comments): Super Scratch Programming Adventure!, too bad there isn't a kindle version for android phone at this time. The promo video is very promising. I will just put this in my wishlist, until I finish reading another scratch book which I have just requested from the Queens Library: Scratch Programming for Teens.
EdX has recently finished a course in Scratch (By Professor Collin Lewis from Harvey Mudd College).
I joined to gather pedagogy information, which was quite helpful.
This teaching method helps a child's math skills as well as programming (thinking logically).
I think this is inspiring enough for me to layout a good pedagogical method:
Brief Intro. With sound as teaching object.
Week 1:- repeat
- drawing
a. # of repeat, 0, 1, etc.
b. nested repeats, complex nested repeats
c. bonus: setting instruments
Project: Write song with 3 instruments + repeated loops.
HW: enquire # repeats sound will make from sample codes, Simplify codes with repeat.
a. basic draw
b. repeated draw (saves time, avoid error)
c. guessing polygon angles (with triangle)
d. concept of turning right and left (how are they different in drawing)
e. mathematics behind polygon angles
f. moving negative steps
g. drawing circles
Project: Drawing with colors, pen size.
HW: from sample, which part draws square, which line is different than original script.
Week 2- Tempo
- Variables
- Introduce hat block
- Coordinates
- Conditional
- Game of Tag
a. set and change tempo
b. Tracking tempo
c. Changing tempo in repeats
a. Show list with different block values, then replace values with variable, then use repeat.
b. order of blocks
c. change instruments in repeat
a. concept of X and Y axes, illustrate with X Y status.
b. set and change X, Y. Relationship to sprite (usually center of sprite). Glide block.
a. If block - testing inequalities
b. If-Then-Else block
c. Use variables in If block (for x, y axes)
d. Predicates (AND, OR and NOT)
e. Multiple If, with variables, nested If.
a. Concurrency and Race. Use hat block to start at the same time. Compare with time delay, etc.
b. Move sprite with arrow keys, other keys. So there will eventually be controlling of 2 sprites.
c. Touching the other sprite...(play sound, text, etc., forever checking)
d. Difference between If inside Forever and vice versa.
e. Repeat-Until Block, Wait-Until (Show they are different from forever, they don't always repeat forever)
f. Reminder of Click Green Flag to start.
g. Keeping score. Use Wait or score increases fast in forever loop.
Bonus: Random Number. Star/Banana catching game (appears @ random location to be caught)
Week 3- Drawing with iteration
- Random Numbers
a. Increasing size, color, tones, etc: Bigger and bigger circles, triangles, etc. squiral or spiral patterns
Project: Draw a house
a. Use Rock Paper Scissors to demo
b. Number guessing game
Week 4- Updating Variables in Repeats
- Iterative Development
- Ask and Join Blocks
- Save as a copy
- Helicopter with platform
- Jumping Sprite
- Making a Maze
a. Trace variable changes in repeats
b. Trace complex variables in repeats
c. Trace variables in nested repeats
a. Show colorful changes with iteration.
b. Methodology: Draw with pen first, then implement variables and effects.
a. Ask. User.
b. Joining two+ words with Join Block.
a. File-> Save as a Copy.
a. Gravity by changing y value, introduce: color () is touching () block.
b. Change Helicopter costume back and forth
Project: Game for helicopter to collect points, spin around, falling
a. Add a key that changes y of sprite while gravity still applies, use color/touching block to make sure sprite jumps only from the ground.
a. Illustrate ball touching top, bottom, left, right, by showing status (yes/no). Hint: use forever. Consider adding sound.
b. Introducing other programming languages (C++, JAVA, PYTHON) and compare their basic implementations to Scratch (e.g. say hello world, arithmetic, etc.)
c. Illustrate (b.) with table of comparison.
d. Testing concept of other programming languages
Advanced
Week 5- Block Creation (functions)
- Strategies for Games
a. Create new block that can draw a square, etc. Use parameters.
b. Use repeat and new block to draw incrementing polygons.
a. Arrow pointing mouse pointer.
b. Click falling apple to gain points (hint: use mouse down block)
c. Introduce Clone blocks (including hat block): For multiple falling apples at random rates.
d. Multiple Levels: create different stages, broadcast/receive blocks, when door is touched, etc., include level #.
e. Instead of door, use invisible goal area (x,y and inequalities test).
f. Scrolling games: moving platforms (left or right). Make it cooler by allow sprite to move independently from the platform for a short distance first before platform starts scrolling (more cinematic, realistic).
g. Health Meter: A new sprite(health) with multiple costumes. (broadcast/receive: lose health)