This is a 5th grade (age ca 11) - ca 20 pupils - with a different teacher than the second grade. He (the teacher) has been paying attention to what the 2nd grade has been doing, and now he wants to do the same with his class.
I will be working with this group first in the morning now, and then move on to the 2nd grade group after the recess.
A quick introduction by the teacher, and I am let loose. I first talk about the turtle, explaining that he knows a few words (commands), but we will be able to "teach" him more. I draw him on the whiteboard. I explain that he has a pen with him, that draws a line behind him.
I then show them the turtle on the screen. They laugh. (Is that the turtle?). I show them how I can command him: Parens, command, parameters. They seem to get it right away. I do a couple of random commands:
(reset) ;; I explain why (forward 50) (left 100) (forward 200) (right 60)
I then set immediately set the to the following task: Draw a square and a triangle. They set to work.
It is interesting to see that they are just as keen as the 2nd graders. The difference is that they immediately understand the basics. They know how to type parens, and can spell the English words with little problems. (Although they think is curious that they have to write in English.) Still, they do require some help to think about turning, angles, etc - some more than others.
Some complete the task very quickly. I show them privately how to do
dotimes, and set them to work on modifying their code.
Then it is time to wrap up the session. The teacher says a few words, and "collects" the laptops. (They need to be plugged in to the trolly for a bit of charging, as the 2nd graders will be using the same machines.) (These are the same very small machines I described in the beginning of the "School 1" Journal.)
I end by quickly showing them all
dotimes from my computer, showing them how I can do square and triangle in less than a minute, then morphing the code to do a star. I get the expected delight and surprise. A great "teaser" for next session.
Observations: It is very interesting to observe how much quicker and more easily 5th graders are able to both grasp and execute on what they learn. This group more or less mastered in the first session what 2nd graders did on maybe 3+ sessions. I will clearly have to stay "on top of my game" in regards to planning a progression of interesting and challenging projects.
Also, I will now have to hurry up and improve and complete the graphical capabilities and the API for the Turtle. Also, I need to complete implementation of file handling - either local og "cloud" - including PATH/library/project handing.
A review of command and algebraic angles/math by the teacher, and we start.
I initially simply ask the kids to write code to draw a square. The code should start with
(reset), so that when it is run it draws a complete square in one go.
I am curious to see what they remember and understand - and also simply to get them "warmed up".
I expect most of the kids to solve it by writing to the moved one by one.
One girl immediatly starts using
dotimes, though. Impressive! Before most of the others are done, she is done, and I have her morph her code into a couple of polygons and then stars.
I the review
dotimes with the kids (showing/writing on my laptop on projector).
They are asked to redo the square. They do. Then a hexagon. Then an octagon. Then a triangle.
The teacher encourages them to think of the angles- the sum of the angles. Someone does a circle.
Now that we have a star, I ask the kids to think about
We ended up with this:
(reset) (dotimes [i 3] (dotimes [i 5] (forward 50) (left 144)) (pen-up) (forward 70) (pen-down)) (hide)
They they "played" with the code, and created other patterns.
One boy did something very interesting (and impressive): After the
(pen-down) he added one more line:
Also, the outer
dotimes he changed from
[i 3] to
[i 8]. Can you see what the result will be? (Try it.)
We repeated last weeks session - by simply asking the kids to first: Do a square (using
dotimes) then modify it to a triangle. Then modify it to a star. They were able to do this on their own in varying degrees of time.
Then I showed them how to do a "command"
defn, and wrap their star in that. And then how to use it repeatedly - manually and in
dotimes - and they set to work drawing stars in a line (or in a circle).
That is pretty much what we had time for. With these 11 year olds, it is clear that they need a clear purpose and direction to keep them motivated. (Direction as in where to go, not how to do it.) A set of graded and progressive projects will be even more valuable for them. See notes from "group 1" for same date.
Today, start with reviewing the command they know, and a few they maybe don't, including
defn. Then set them to work on the following assignments:
They may store their code (on Google Drive) - using the build-in tool or a text-editor.
Will they think to ask for something a la
No, they did not think to ask for these options.
I started by presenting the assignments - as drawing on whiteboard.
We only made it to the first assignment. Most of the children approached it from a purely procedural line of code. Some saw the opportunity to use
dotimes. One or two were able to define one or more "command"s.
I ended the session with demonstrating how one might break down the problem into discrete parts, defined functions, and them compose those.
Next week is "winter vacation". The week after that we will repeat the first exercise, and then go on from there.
Today we started with a quick "warm-up" exercise: Do a square. Make a command called "square", and invoke it. The we revisited the tic-tac-toe board assignment.
Several things were interesting here: First, most of them struggled with the square. They seemed to not know quite how to start, and they certainly didn't see an immediate solution.
Did they simply not remember from 2 weeks back? Or are they missing some basic understanding? Have I overestimated their ability and moved forwards to fast?
A few completed the square in a reasonable time. Some simply weren't interested in the assignment, but they were interested in doing something - specifically creating rotating patterns. And a few simply weren't interested at all.
As for the tic-tac-toe, almost no-one progressed significantly, and only one or two saw how they might break it into parts (commands).
It seems that at age 11 the children are in a bit of a no-mans land, making for an interesting challenge:
They are somewhat impatient and agitated, and so moving slowly with lots of repetition isn't optimal. Yet, they don't have the higher-level logical thinking that allows them to grasp the problem and see solutions quickly and easily. And also, they a very diverse in intellectual and emotional development.
Perhaps a solution for this group is to:
Next Thursday the entire school will be out on field day.
Plan: Present them with the choice of the 3 patterns from last time + "build a town".
Result: I was alone with the group today. Not a problem. I presented the selection of assignments. They understood, and a few made a choice and started working. A few more made a choice after being persuaded to do so. One or two simply wasn't interested in doing anything.
A couple asked if they could listen to music. After a bit of consideration is said yes, but on the conditions that they are working on an assignment and that they are using headphones. I did not anticipate that several, in stead of plugging into their phones, went to YouTube, one thing lead to another and 10 minutes later a large percentage were running about looking at videos. Lesson learned: I think it is OK to listen to music while working (I do so myself. It helps me a lot!) But NO VIDEO!
Furthermore, the challenge here is to a large degree social (behavioral): It is hard to learn and make progress without motivation. What motivates?
A discussion with the teacher afterward suggests that for some, competition might be motivating. While for others, it might have the exact opposite effect. For many "completion" might have a motivating effect, e.g. having completed so and so many steps (progressed/made made it through levels). And others again might be motivated by being able to show quality - of code and/or art.
So then the question is, how to design a system where children can work their way through an (automatically) guided and evaluated progression of steps and activities, and where they can choose to share their results with their peers. (I wonder if it is better not to allow sharing with the world, as on a world basis you will never be able to compete.)
As for actual results today: negligible. No-one achieved anything significant.
This time, we did a "synchronized" development session - where the kids programmed along with me, and I paused step by step to allow the kids to keep up.
We made it as far as a one-parameter command
(defn house [size]).
The result was a more orderly lesson, and one where everyone achieved something.
We will continue on this track next time.
Starting at the top, as planned. This group of children are very lively. The preferred method of trying to get everyone quiet and paying attention is futile. So in stead I went for loud speech, high tempo, constant challenge. And the response was very good: The kids payed attention and achieved a lot.
In this case we made it as far as the code bellow.
Next time we will work with using
rand-int to control size and location of houses.
(reset) (defn house [size] (dotimes [i 4] (forward size)(right 90)) (dotimes [i 3] (forward size)(left 120))) (defn jump [dist] (pen-up)(forward dist)(pen-down)) (house 50) (jump 70) (house 20) (jump 50) (house 100)
We started with doing a star, making it into a command, calling that command in a
dotimes, adding a turn and a jump, making the size of the star param-based, inserting
rand-int in three places. Then I challenged them to do a "house" command. Then to "plug" that into the
dotimes in stead of the star. Only one girl got that far. She then discovered that she somehow had to correct the rotation of the houses. I showed her how to to that with a
In general, these exercises, while extremely valuable, simply don't engage a majority of the kids. Add to that a high level of "energy" (read: noise and distractions), and even the ones who would do well when alone, simply loose focus.
Today I would like to lead with 3 questions:
Hvilke programmer har du sett/brukt idag? - programmer på telefonen - TV operativsystem - informasjonsprogram på bussen - kjøkkenklokker! - nettsider Hvem har laget disse programmene? Hvis du kunne programmere hva du ville, hva ville du bygget da? Hvordan ville du satt igang for å lære dette? Foretrekker du å lære/jobbe alene eller sammen med andre?
We make it as far as the code bellow.
(reset) (defn hjul  (rep 36 (forward 3) (right 10))) (defn rekt  (rep 2 (forward 100) (left 90) (forward 30) (left 90))) (defn bil  (rekt) (forward 20) (hjul)(forward 60)(hjul)) (bil) (pen-up) (forward 50) (pen-down) (bil)
Next time, repeat the process, but add a
jump command, and parameters to
rand-int to populate a highway.
As planned, we started at the top - looking at what a road full of cars would look like on the whiteboard, and "together" breaking it down to its smaller components.
Interestingly, even after attempting to break it down, most of the kids express not having any idea about where to start or what to do.
I therefore "gave" them most of the pieces (
jump), and then asked them to start putting it together correctly. But still they were at a loss, even when they had copied everything.
In the end "we" ended up here:
(reset) (defn jump [dist] (pen-up) (forward dist) (pen-down)) (defn rekt [B H] (rep 2 (forward B)(left 90) (forward H)(left 90))) (defn sirk [f] (rep 12 (forward f) (right 30))) (defn bil  (rekt 70 20) (jump 5)(sirk 5)(jump 40)(sirk 5) (jump 25)) (bil)