Monday, August 25, 2014

Flags (programming lesson 2)

Who: Baan Pathomtham 5th grade class (all present)
Where: at school
When: 2 hours in the morning

Apologies that this post is a little bit of a muddle. I am including material for the school teachers and other parents so that  you know what we are doing and can help your child if they want. For the more general audience, I want to explain what we did and share my thoughts about what I learned and teaching more generally.

Animations

Let's start with the really fun bit: some code that the kids wrote:
A Thai flag


Colorful yin-yang (inspired by the Korean flag)


What your child has learned

This is just a quick list; you can ask them to show you and, if anything seems unclear, I've got some links that can help or just send me a Line message.

0. You can see code that the students are writing through this directory. My own folder with a lot of examples is here: jgplay.pencilcode.net/edit and the class folder is here jgplay.pencilcode.net/class/edit.
1. Basics of setting up an account, logging in to our accounts, opening a new file for programming, saving our work, and changing the name of the file. All of these are summarized quickly on this page: Making a Pencilcode Account.

2. How to test the program and run it in full screen mode, how to use blocks to build a program and how to toggle between code and blocks.  Play around clicking on the basic screen and these are all pretty easy to see.

3. Basics of moving the turtle (fd, rt, lt, jump) and drawing (pen, dot, pen path, fill). This handout has enough to get started and is what we worked on for the first lesson.

Important there is a lot of helpful material here: http://guide.pencilcode.net/home/. Feel free to make use of any of this, even code from which I have drawn the in-class activities and homework assignments.

Homework
The challenge this week is to replicate this turtle drawing (the last figure on the hand-out from last week):

What are they really learning?
This course isn't really about learning how to make a little turtle move and maybe it isn't even about programming. Here are things we did and what I wanted to show them.

To start the lesson, we looked at the programs each student wrote to draw a Thai flag. I've given one example above, but suffice it to say that all five of the programs were different! I was a little surprised we got so much diversity from this simple flag, but that was good for the kids to see: there isn't a single right answer.

Some students were only partially successful.  That's also fine! We got to talk about where they were stuck and learn another pencilcode command (pen path . . . fill <color>), which we later spent most of the session investigating.

I showed them my flag programs: South Korea (more complex shapes and animation) and Thai (simple animation and music). Was I just showing off to the beginners? No, letting them know that there isn't a limit to what they could build (it isn't just moving a little turtle around).

The main meat of the day, though, was spent playing with filled paths, drawing arcs, and drawing simple shapes. This was really a geometry lesson and I was delighted to hear them asking each other: "how many degrees? how many sides, how long should this be relative to that?" They also did a lot of experimenting with new commands, trying different angles and sizes to get things to fit together. Overall, a lot of great math.

And. . . once again we saw that simple things can be attacked from many different directions.  For the task of drawing a simple equilateral triangle, the kids came up with 3 different approaches (though they couldn't get all of them to be equilateral).

What I learned
First message I got was to ratchet down my expectations for how quickly we can go through the programming material.  My intention had been to introduce for-loops today (and that was even a step back from my original plan to go through for-loops and nested loops!) We need give them a chance to really get used to the basic operations and elements around programming.

The second lesson is to make the math part more explicit. Inherent in all their drawing programs will be distances, angles, circles, arithmetic, and some algebra. For students this age, I need to respect that these are also important concepts and big challenges.

1 comment:

  1. Plan for Monday:
    (1) Introduce some visualizations that will help with the geometry around moving the turtle, particularly:
    http://pencilcode.net/material/measuring.pdf
    http://pencilcode.net/material/arcs.pdf
    http://david.pencilcode.net/home/explainer/turns
    http://david.pencilcode.net/home/explainer/curves

    (2) show the command line
    (3) do shape comparisons, based on this code and command line manipulations:
    http://jgplay.pencilcode.net/edit/class/shapes

    (4) simple introduction to for loops (time permitting)

    (5) homework: draw their name in Thai and English,
    copy my code for animating my name and experiment. They can choose either
    http://jgplay.pencilcode.net/edit/class/nameJG2
    or
    jgplay.pencilcode.net/edit/class/nameJG3 (if I get this one working)

    ReplyDelete