Help, where to start learning Java

W

writeOnceDebugEverywhere()

john said:
Hi, i have read 2 books( thinking java and how to program in java), and

have general understanding of the programming language. But even
after reading 2 books, i still feel it is hard to apply what i've
learn, is there a program out there that makes learning/programming
Java easier,

- you must decide what area of java programming you want to lear.
Then, try to find some application written by java proffesionals, with
source code; and study careful this code. By my opinion, this is the
best method...
 
R

Roedy Green

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

Luc The Perverse

Roedy Green said:
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
 
R

Roedy Green

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

yakovfain

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
 
R

Roedy Green

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

Luc The Perverse

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

Roedy Green

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

Stefan Ram

Roedy Green said:
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.

Sometimes one believes that it is easy for children to
understand technology..

The German researcher Martina Ziefle did an experiment with
children and adults and found that this is not true. But there
was a difference: The children wanted to learn and thus had
much more patience than the adults.

A small report in German about this experiment is here:

http://www.heise.de/newsticker/meldung/print/37449

Alan Kay was teaching five-year old children how to
program a circle: They were asked to walk in a circle
and to report what they did. The children would answer
"walk a little and turn a little." After that cognition
they could write a program to draw a circle.

Ten-year old children already knew what a circle is:
"The set of all point, having the same distance to a
center." So they startet to program individual points
starting at a center, which was more complicated; and
the result was non a connected circle but only single
dots.

Fifteen-year old children already knew the formula »r² = x² + y²«.
They tried to draw a circle using that formula, but
failed. (This formula is not a good starting point for such a
program.) Just because of their additional knowledge, it was
actually more difficult or impossible for them to write such a
program. At least that is what Alan Kay said in a video.
 
M

Mickey Segal

Luc The Perverse said:
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.
 
L

Luc The Perverse

Roedy Green said:
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.
 
D

David Segall

Luc The Perverse said:
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
 
R

Roedy Green

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
 
Y

yakovfain

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
 
R

Roedy Green

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

zero

(e-mail address removed) wrote in @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.
 
M

Mickey Segal

zero said:
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.
 
L

Luc The Perverse

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

Mickey Segal

Luc The Perverse said:
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.
 
Z

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.

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,780
Messages
2,569,611
Members
45,270
Latest member
TopCryptoTwitterChannels_

Latest Threads

Top