Teaching Children (was Re: Help, where to start learning Java)  
Author Message
Luc The Perverse





PostPosted: 2005-12-25 3:13:00 Top

java-programmer, Teaching Children (was Re: Help, where to start learning Java) "Roedy Green" <email***@***.com> wrote in
message news:email***@***.com...
> I was lead counselor at a computer summer camp. I interviewed all the
> kids and discovered most of them wanted more than anything to write
> their own video games. There were programming novices. But within a
> week nearly every kid had written a game or animation. I was utterly
> blown away how fast they learned. In the breaks they DEMANDED to learn
> trigonometry, which blew the mind of a math prof who was watching the
> production.
>
> The other thing was the kids wrote nothing but commented/structured
> code. They never saw anything else, so it never occurred to them to
> do other wise.

Now this I didn't realize.

I had no idea you had experience in teaching children? I have been
looking for ideas to teach and stimulate desire to learn logic and
mathmatics in younger children. It is my belief that subjects which are
typically reserved for higher education such as trig, calculus, discrete
math, deductive logic could all be started before children ever leave
elementary. The trick would only be to interest the children, and present
the material in a way that it could be absorbed.

Can you offer any insight into this matter? Into teaching children how to
make games? What engine did you use (I suppose you were using Java).

--
LTP

:)


 
Roedy Green





PostPosted: 2005-12-25 11:05:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) On Sat, 24 Dec 2005 12:12:36 -0700, "Luc The Perverse"
<email***@***.com> wrote, quoted or indirectly
quoted someone who said :

>Can you offer any insight into this matter? Into teaching children how to
>make games? What engine did you use (I suppose you were using Java).

In the 90s I wrote a column for the Computer Paper on my theories
based on my experiences as head instructor at a computer camp where
the kids blew me away with how fast they learned.

The key tricks are these:

1. this is a kid's environment. Lots of noise, chaos, goofy stuff.

2. When I speak I demand absolute silence. In return I speak no more
than a couple of carefully planned sentences, dramatic if possible. I
don't repeat myself publicly. I want them hanging on my every word.
The last kid to stop talking I made run out of the room a block or so
away to ring a bell then run back. It was not that much of a
punishment, since the kid got the fun of making his classmates laugh
when they heard the bell. But I did get rapt attention.

3. Leaking. I teach something to a small group of kids I don't teach
to the others. This becomes their secret weapon to use in their
programs. The kids see the results, and either wheedle the
information out of the "privileged" kids, or chase me around to tell
them too. You have never seen kids so motivated to learn trig!

4. example code.. This code does a simple version of what the kids
want to. It is commented to death. They can just type it in to try
it out. In the process of getting the typos out the have it pretty
well understood and are well on their way to theme and variations.

5. Graduated bang for buck. On day one, all the student had to do was
his a function key and you would be rewarded with a randomly sized,
placed, and coloured helicopter. You got maximal reward for least
effort. As time progressed the student had to work ever harder for
ever more subtle rewards in fine control.

6. Order of presentation. I taught methods first, iteration and random
numbers second, and arithmetic third. It was absolutely natural in
drawing for kids to organize methods into hierarchies of reusable
components they could share.

7. Learn by experiment. I presented the editor this way. These keys
do something. See how many of them you can figure out what they do.
The emphasis is that computers are SUPPOSED to be mysterious and
undocumented. It is supposed to be puzzle to figure out. You are not
supposed to get it on your first try.

8. Let the kids teach each other. They have their own ways of
explaining things. They can do it in parallel much faster than I can.
All I have to do is give enough of a hint so that a few students
figure it out. It then ripples throughout the class by student to
student interaction.

9. On opening day I gave a little introductory speech where I said
something like. I have interviewed you all and it is clear you want
more than anything to learn to write your own computer games. I
promise I will not teach you ANYTHING that is not necessary to write
computer games. Unfortunately, sometimes it won't be clear why you
need to learn something, so you will just have to trust me.

10. Graph paper. One of the very first exercise I did was hand out
graph paper and ask each kid to draw a Pac Man or similar simple
figure, with polygons, and label all the vertices with the absolute
co-ordinates. As each kid (ages 7 to 15) completed the task they
brought it to me or one of my assistants for checking. If they had it
right they went off to another room where the computers were. There
they were shown how to type the polygon vertices into the computer
into a simple skeleton drawing program and see their creation
realised, usually in hideously garish colours. The unconscious lesson
the kids learned was the planning was hard, but the computers were
easy. The kids only had a few short sessions a day of computer
access. The rest of the time they were doing traditional summer camp
things. But the kids would carry about sheafs of graph paper to plot
out their masterpieces in ever spare moment.

11. I remember my entire childhood quite vividly. I recall adults
being so patronising. I tried hard not to do that.


Caveat. This style of teaching is utterly exhausting. You could not do
it full time or without an incredibly good support staff as I had.
Some kids are freaked by the pandemonium, or the competitive pressure
that develops even when I don't consciously foster it.

At UBC, teaching people slightly older than I was, I used different,
but unconventional techniques. There the problem is keeping students
awake.

So I banned note taking. I had contests, often with two teams, with
points for answering questions, solving problems at the board (done
say 5 from a team at a time).

The winning team would get chocolate bars (only a nickel back then),
or selections from the local bakery.

The idea here was even if the student did not care about the class he
did not want to let down his team.

On opening day I would say, "No student of mine has ever failed. So
you can relax. However, you would probably find you will spend more
time on this course than any other."

The class was supposed to be an hour, but often student would hang
around for 6 hours before the last one went home.

I spent lots of time on theme and variation of the fundamentals, which
panicked the students because we were "behind". But my students
thoroughly got them so they could write code in their sleep (or under
exam pressure). Then it was pretty easy to add the fancy stuff later
on that solid foundation.
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
Luc The Perverse





PostPosted: 2005-12-25 14:10:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) "Roedy Green" <email***@***.com> wrote in
message news:email***@***.com...
>>Can you offer any insight into this matter? Into teaching children how
>>to
>>make games? What engine did you use (I suppose you were using Java).
>
> In the 90s I wrote a column for the Computer Paper on my theories
> based on my experiences as head instructor at a computer camp where
> the kids blew me away with how fast they learned.
*snip*

I've always known children's potential is mostly untapped.

I too hope to some day teach - though I know not how or when

:)


 
 
Roedy Green





PostPosted: 2005-12-25 14:26:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) On Sat, 24 Dec 2005 23:09:46 -0700, "Luc The Perverse"
<email***@***.com> wrote, quoted or indirectly
quoted someone who said :

>I've always known children's potential is mostly untapped.
>
>I too hope to some day teach - though I know not how or when

It was one of the most fun things I ever did. To this day I run into
kids I taught then or at UBC who still remember those crazy times
fondly.

I am quite a ham and that sort of teaching is a great outlet for that.

The kids just lap it up after the grim regimentation that teachers
have to impose in order to teach classes of 40 single handed 5 hours a
day, week after week.

The assumption that many educators make is that kids don't want to
learn and you have to coerce them. My assumption is that they are
naturally curious, and your job is not to squash that wide-ranging
curiosity and encourage them to remain curious in the event of
frustration.. You are there to facilitate them. They are not there to
perform for you.

Whereever a child's curiosity leads, THAT'S the curriculum for now. So
much energy for learning is blunted by trying to control what a child
should learn when.

I have great hope for Internet based learning where it will be much
more feasible for each kid to go off in different directions.
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
 
yakovfain





PostPosted: 2005-12-26 22:06:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) I was teaching my son Dave Java and these are some obsercarions:

Most of the programming tasks require minimal knowledge of arithmetic
and algebra skills. To start programming, a kid needs to understand
what x = y+2 means. Another important concept to understand is an if
statement.

Kids develop the abstract reasoning abilities by the fourth-fifth
grade, and they also easily perform such tasks as browsing the Web,
downloading and installing software. Dave have learned how to type,
compile and run Java programs in Eclipse IDE in no time.

Kids learn much faster than adults, but they do not have "previous
programming experience", which may actually be a good thing, because
they do not have to switch from a procedural to object-oriented way of
thinking. After learning about inheritance, Dave called my wife a
superclass.

Adults are responsible creatures, and they can keep doing boring
operations much longer that kids. Programming lessons with kids have to
be short. One or two 45-minute lessons per week is enough. High school
kids should be able to study more, but I do not have such experience
yet.

Anyway, I wrote an e-book on teaching kids Java. You can find a sample
chapter at
http://www.smartdataprocessing.com/java4kids.htm

One of the publishers is planning to release the printed version of
the book next year. I want it to be in color, but it's lot more
expensive for a publisher so we are still negotiating...

Happy New Year,

Yakov Fain

 
 
Roedy Green





PostPosted: 2005-12-27 1:20:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) On 26 Dec 2005 06:06:18 -0800, email***@***.com wrote, quoted or
indirectly quoted someone who said :

>One or two 45-minute lessons per week is enough.

That is important. I is also important to keep things interactive.
Don't expect a kid to sit there and listen to you like some college
prof droning on an on. I like to keep it down to 2 sentence before the
kid either says something or does something.
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
 
Luc The Perverse





PostPosted: 2005-12-27 2:52:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) <email***@***.com> wrote in message
news:email***@***.com...
> One or two 45-minute lessons per week is enough.

??

This goes very much against my intuition.

Do you mean only limiting any kind of formal instruction?

As a kid when I became fascinated with something I would spend countless
hours on it - that is what I believed made me progress and learn.

The same as an adult. When I want to learn a new foreign language (I have
not done so in a few years) I sit down for about eight 45 minute lessons a
day, alternating with exercise. Its annoying after I work my ass off to
hear someone who tried for 15 minutes to learn a foreign language to tell me
that I just have an aptitude for it.

I intend on teaching my daughter to start programming as soon as she learns
to read which should be in a few years.

Be sure and let me know when your book becomes available!

:)


 
 
Roedy Green





PostPosted: 2005-12-27 4:43:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) On Mon, 26 Dec 2005 11:51:31 -0700, "Luc The Perverse"
<email***@***.com> wrote, quoted or indirectly
quoted someone who said :

>This goes very much against my intuition.
>
>Do you mean only limiting any kind of formal instruction?

The kids will go nuts on their own time. Ask Yakov about his
experience, but what I suggest limiting is formal class time.

I found that at summer camp, some kids would stalk me to pump me for
information outside of class hours. That does not count. The kid is
in control of when he wants to do that.

Kids around 10 to 12 love to build elaborate models with thousands of
parts, miniature cities, aircraft carriers etc. This instinct serves
them well to develop large computer programs. They have little trouble
keeping track of its many parts. So focus right from day one on how
to write LARGE programs -- encapsulation, reuse, naming.
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
 
Mickey Segal





PostPosted: 2005-12-27 12:23:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) "Luc The Perverse" <email***@***.com> wrote in message
news:43b03bb1$0$7825$email***@***.com...
> Be sure and let me know when your book becomes available!

From the URL:
http://www.smartdataprocessing.com/java4kids.htm
it looks like it is available already as a $20 download. I will see if I
can interest my kids in the book; they are currently focused on Game Maker:
http://gamemaker.nl/
I'd prefer for them to learn a general purpose language, perhaps with a
special purpose game addition such as:
http://goldenstudios.or.id/products/GTGE/index.php
When we wrote a calculator program in the Game Maker language we spent a lot
of effort on dealing with the missing things in the Game Maker language such
as double precision math and arrays of newly defined objects. If the guts
of a game environment were Java it would be easier to help them and their
knowledge would be more generally useful.

What Roedy Green did in teaching kids about computers is the wave of the
future, but it is not likely to happen in many schools in the near future.
Camps, clubs, supplemental classes, home schooling and interested parents
will get kids to do terrific things before such approaches go mainstream in
most schools.


 
 
Luc The Perverse





PostPosted: 2005-12-27 12:49:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) "Roedy Green" <email***@***.com> wrote in
message news:email***@***.com...
> The kids will go nuts on their own time. Ask Yakov about his
> experience, but what I suggest limiting is formal class time.


Ok - I was just misunderstanding - in that case then I would agree.

> Kids around 10 to 12 love to build elaborate models with thousands of
> parts, miniature cities, aircraft carriers etc. This instinct serves
> them well to develop large computer programs. They have little trouble
> keeping track of its many parts. So focus right from day one on how
> to write LARGE programs -- encapsulation, reuse, naming.

Having been a kid of 10 to 12 - I recall quite vividly. I had extensive
armies of different pieces. The lego armies and some other construction set
I don't know the name of - I had to rebuild them at the end of every war
since the battles would cause significant . . . disfigurement.

I wish I could find that construction set. The basic set was "connectors"
which were cubical with round pegs that the building pieces (oblong
rectangular prisms) could snap into. The basic set was grey pieces with
blue connectors, but I had several kits, so there were short pieces, long
pieces, some rounded pieces. Eventually they came up with the idea of a
much flatter swinging piece would spin instead of being fastened in place
(it was long and flat like a popsickle stick with hooks on each end.) My
grandma decided one day that I was too old for "toys" and threw away the
ship I'd had (although rebuilt many times) for over 12 years. I'm not mad
at her anymore, but I feel bad for her - she doesn't believe in sentimental
value of posessions.

--
LTP

:)



 
 
David Segall





PostPosted: 2005-12-27 14:08:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) "Luc The Perverse" <email***@***.com> wrote:

>"Roedy Green" <email***@***.com> wrote in
>message news:email***@***.com...
>> I was lead counselor at a computer summer camp. I interviewed all the
>> kids and discovered most of them wanted more than anything to write
>> their own video games. There were programming novices. But within a
>> week nearly every kid had written a game or animation. I was utterly
>> blown away how fast they learned. In the breaks they DEMANDED to learn
>> trigonometry, which blew the mind of a math prof who was watching the
>> production.
>>
>> The other thing was the kids wrote nothing but commented/structured
>> code. They never saw anything else, so it never occurred to them to
>> do other wise.
>
>Now this I didn't realize.
>
>I had no idea you had experience in teaching children? I have been
>looking for ideas to teach and stimulate desire to learn logic and
>mathmatics in younger children. It is my belief that subjects which are
>typically reserved for higher education such as trig, calculus, discrete
>math, deductive logic could all be started before children ever leave
>elementary. The trick would only be to interest the children, and present
>the material in a way that it could be absorbed.
>
>Can you offer any insight into this matter? Into teaching children how to
>make games? What engine did you use (I suppose you were using Java).
I think that the only "insight" is realizing that it all depends on
the teacher. Skilled teachers can teach anything using any technique
but they need to have similar talents to good actors or court room
lawyers. They must love playing to the audience and be sensitive to
it. The are thrilled when they have the audience in rapt attention and
are able to detect and react when they are losing their attention.

Technical teaching skills and the use of teaching aids can be learned
but, as in any other profession, they are no substitute for talent.
and there a
 
 
Roedy Green





PostPosted: 2005-12-27 17:46:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) On Tue, 27 Dec 2005 06:07:30 GMT, David Segall <email***@***.com>
wrote, quoted or indirectly quoted someone who said :

>I think that the only "insight" is realizing that it all depends on
>the teacher. Skilled teachers can teach anything using any technique
>but they need to have similar talents to good actors or court room
>lawyers.

I am such a ham in front of a big audience. I have spoken in front of
audiences thousands of times. There is no substitute for just doing
it over and over and learning what works with what sorts of audiences.

Once you get over the stage fright, it is one of the most fun things
you can do.

A kid's audience is tougher at first. They won't be polite, but on the
other hand, they are a lot easier to get rolling and they get totally
carried away.
.
I am working on an essay at http://mindprod.com/jgloss/teaching.html
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
 
yakovfain





PostPosted: 2005-12-27 20:21:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) Roedy, teaching in the summer camps is a great idea!

IMHO, kids should be learning programming not by solving some math
problems (booooooring...), but by implementing something they like.
Video games is a perfect example. Kids should get the message that
you do not have to be a nerd to become a computer programmer. So they
will not be afraid of selecting Computer science or Information Systems
as their college major in the future

 
 
Roedy Green





PostPosted: 2005-12-27 21:38:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) On 27 Dec 2005 04:21:04 -0800, email***@***.com wrote, quoted or
indirectly quoted someone who said :

>IMHO, kids should be learning programming not by solving some math
>problems (booooooring...), but by implementing something they like.

Once they get into it, computer programming itself is interesting. At
least in the early days it was a key to let you in anywhere to satisfy
curiosity. I could walk into a bank who had hired me to write code,
and ask anyone anything and they would answer. Then I might be out at
a university learning some advanced math to study movement of
pollutants in soils, or I might query engineers on the fine points of
high voltage tower construction. It is like passport to let you have a
number of mini careers.

--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
 
 
zero





PostPosted: 2005-12-28 2:19:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) email***@***.com wrote in news:1135686063.972748.62340
@o13g2000cwo.googlegroups.com:

> IMHO, kids should be learning programming not by solving some math
> problems (booooooring...), but by implementing something they like.
> Video games is a perfect example

Great idea in theory, but it has a major drawback. Game programming is one
of the hardest subfields of programming. You could argue that there are
plenty of simple games that can be made (snake, tetris, ...) but those just
don't compare to the kind of games modern kids play on a daily basis.
Creating a snake game that is visually sufficiently appealing for a 12 year
old is not that easy. So more than anything, I think programming a game
may be a disappointment for many children.

I do think that they should be led to create interactive programs instead
of the traditional "hello world" or recursive combinations. Examples could
be a simple puzzle or a visual representation of the towers of hanoi. Also
a good idea is to tie the programs they make to other things they are
learning. If for example a kid is learning a second language, have him
create a program to store and look up words in a dictionary. If they are
learning basic summation, have them create a program that they can use to
check their exercises.

--
Beware the False Authority Syndrome
 
 
Mickey Segal





PostPosted: 2005-12-28 2:31:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) "zero" <email***@***.com> wrote in message
news:email***@***.com...
> Creating a snake game that is visually sufficiently appealing for a 12
> year
> old is not that easy. So more than anything, I think programming a game
> may be a disappointment for many children.

Our kids are having a good time with the Game Maker environment
(http://gamemaker.nl/), which allows kids to create a visually-appealing
result with little fuss. They are not disappointed. The Game Maker
environment uses true object-oriented programming, but because the code is
in its own "Game Maker language" rather than C++ or Java the programming
experience does not allow an easy jump into standard programming. Also,
because many basic features of mature programming languages such as double
precision calculation are missing the kids get frustrated when they stray
away from games.


 
 
Luc The Perverse





PostPosted: 2005-12-28 5:58:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) "Mickey Segal" <email***@***.com> wrote in message
news:email***@***.com...
> "zero" <email***@***.com> wrote in message
> news:email***@***.com...
>> Creating a snake game that is visually sufficiently appealing for a 12
>> year
>> old is not that easy. So more than anything, I think programming a game
>> may be a disappointment for many children.

A reply to "zero":

When teaching children to code, anything visual is going to be more
appealing than basic text. Children may have aspirations of making Doom
III, but it's not going to happen. I got excited about programming without
the prospect of making fun interactive games. Pictures, GUIs, sounds,
animation etc is what is appealing to the eye, no matter what form it comes
in.

> Also, because many basic features of mature programming languages such as
> double precision calculation are missing the kids get frustrated when they
> stray away from games.

You . . . aren't implying that this is a good thing are you?

While programming of any sort is useful, forcing kids to stay with games can
also be a problem.

--
LTP

:)


 
 
Mickey Segal





PostPosted: 2005-12-28 8:22:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) "Luc The Perverse" <email***@***.com> wrote in message
news:43b1b8f9$0$7825$email***@***.com...
> You . . . aren't implying that this is a good thing are you?

It is not a good thing to trap kids in programming only games. It is
helpful to have them enticed into programming because of games but then they
should be able to discover all the useful features of a real language such
as double precision calculation and other features of real programming.


 
 
zero





PostPosted: 2005-12-29 0:42:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) "Luc The Perverse" <email***@***.com> wrote in
news:43b1b8f9$0$7825$email***@***.com:

>
> When teaching children to code, anything visual is going to be more
> appealing than basic text. Children may have aspirations of making
> Doom III, but it's not going to happen. I got excited about
> programming without the prospect of making fun interactive games.
> Pictures, GUIs, sounds, animation etc is what is appealing to the eye,
> no matter what form it comes in.
>

Actually I think interaction is a lot more important than visually
appealing features. Most visual stuff is, certainly in the early stages,
going to be disappointing imo. However, if they can interact with programs
they made themselves, they'll find it more interesting. They will want to
make changes to the code and see how that affects the interaction. At
least that's what I found interesting. I could never see an example or
exercise without wanting to "improve" it.

For example I believe a program showing a static picture and playing a
sound file less appealing - and a lot harder to make - than a text-only
"guess the number" game. So interactivity is the key. And of course games
are interactive, but they shouldn't be presented as "computer games",
because that brings up visions of Doom and The Sims.


--
Beware the False Authority Syndrome
 
 
Luc The Perverse





PostPosted: 2005-12-29 10:19:00 Top

java-programmer >> Teaching Children (was Re: Help, where to start learning Java) "zero" <email***@***.com> wrote in message
news:email***@***.com...
> "Luc The Perverse" <email***@***.com> wrote in
> news:43b1b8f9$0$7825$email***@***.com:
>
>>
>> When teaching children to code, anything visual is going to be more
>> appealing than basic text. Children may have aspirations of making
>> Doom III, but it's not going to happen. I got excited about
>> programming without the prospect of making fun interactive games.
>> Pictures, GUIs, sounds, animation etc is what is appealing to the eye,
>> no matter what form it comes in.
>>
>
> Actually I think interaction is a lot more important than visually
> appealing features. Most visual stuff is, certainly in the early stages,
> going to be disappointing imo. However, if they can interact with
> programs
> they made themselves, they'll find it more interesting. They will want to
> make changes to the code and see how that affects the interaction. At
> least that's what I found interesting. I could never see an example or
> exercise without wanting to "improve" it.
>
> For example I believe a program showing a static picture and playing a
> sound file less appealing - and a lot harder to make - than a text-only
> "guess the number" game. So interactivity is the key. And of course
> games
> are interactive, but they shouldn't be presented as "computer games",
> because that brings up visions of Doom and The Sims.


Perhaps you are right.

But there is a stigma attached to programs that run in the console window.

But it doesn't have to be one way or the other. The user interaction could
already be coded by the professor, and the students need only write the
interactive part. The coding part for the students would be approximately
the same difficulty, and may even be easier if the interaction function is
Play

But on the other hand - the instructor could provide a "guess the number
interface", and only require the students to provide the code which allows
them to make it run on the same order of complexity as if they had written a
text based game.

--
LTP

:)