Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re: Teaching Children How to Program

by samizdat (Vicar)
on Nov 14, 2005 at 13:57 UTC ( #508308=note: print w/replies, xml ) Need Help??

in reply to Teaching Children How to Program

First off, congratulations on taking on the greatest challenge there is. Before 'No Child Left Behind' wiped out most opportunities for free-form education, I spent almost three years of happy afternoons figuring out how to open up the field for ten year olds. See the 8-yr olds thread already posted for my previous commentary and a link to an article with a lot of ideas we tried.

Plan to spend 4-6 hours prepping for every hour in the classroom. There are two ways to proceed, depending on the crucial question of whether the kids have access to computers at home. If they do, then plan on getting them set up at home as one of your first big pushes. Why? Once you have them going with a simple program, they will want to build confidence by changing colors, sizes, wording, etc. You will need to prep the parents for what's going to happen and make it as easy as possible. {USE FREEWARE!!!!} Once this hurdle has been surmounted, you will have a much easier time of it because, as GrandFather and Panda show, the child will start contributing on his own.

If the kids are not set up at home, which was the challenge we faced, you will need to set up classroom time for such un-directed exploration. It is critical not to just drive forward to teach new things and ignore the need for student-driven exploration. The ultimate goal of education is to get kids to cut loose and explore on their own, so set this as a more important goal than teaching Perl. The result will be that the group takes longer to get started but ends up taking off and flying.

I can see that you've put some good thought into your progression. This is good. We spent a lot of time setting up donated BSD/Linux machines in the classroom, and that was a mistake because it was too much to explain and, because they were so different, we had to set them up and explain them over and over every year. If I were to do it over, I'd spend more time on programming, as you are doing, and -- at most -- create access to a net-resident FreeBSD web/database/programming server somewhere with PuTTY.

Definitely spend time creating a library of modules to make it easier. When you're in the classroom, you want to have a simple series of steps that end up creating a result: action. It doesn't need to be graphics-based; we got a lot of good mileage from the tried and true Bourne shell. Two things are important: an easy path to success, and changeability. This will suffice for most of your learners; you can take the brighter bulbs aside and point them to the source of your modules for insight into reuse and levels of interface development. If Internet access is allowed, DO set them up as Perl Monks members. The use of Interent communities is every bit as important a development as programming, and their questions won't be any more dumb than some I myself have posted here. ;-]

Your idea to start with a game is a good one. Be prepared for it to be a bigger project than you think, though. Again, the more you can pre-program as libraries, the better. If you get that accomplished, I'd suggest that you take the students who are still with you to a place where you start to create analogues of computers: simple "little language" interpreters, models of a CPU, logic demonstrators, and state machines. Adventure games and MUDs are a great entree into this world.

Finally, look for help. In my case, the New Mexico BSD and Linux Users' Group provided motivated bright bulbs and computer hardware to the cause. I sparked the plug, but they all provided a lot of gas to make a pretty big bang for a lot of students who would never have had a chance to see beyond keypunching as a job. Just remember that everything you do will be stretching your students' experience in a good way, and resolve to have everybody have fun no matter how much actually gets done. If you can get them to move forward and explore on their own, you're ahead of the game. At the end of the day, THIS is what counts, because most of the problems our society faces today can be traced to kids being conditioned to accept that somebody else's answers are more important than their own.


Replies are listed 'Best First'.
Re^2: Teaching Children How to Program
by Sandy (Curate) on Nov 14, 2005 at 14:17 UTC
    Thank you for your comments.

    The students have a computer room at the school, where they are allowed free accesss before and after school, and at lunch time, as long as they make an appointment.

    I'm still not sure if they have internet access at the school.

    For those kids with home computers, I prepared a 'take-home' package with ActivePerl and CrimsonEdit (opensource and freeware).

    Strangely enough, one of the earliest discussions about this course was money. The home and school association wanted to charge for it. I, however, refused to teach the course if they charge money. The kids at this school come from a wide variety of economic conditions, and I hate the idea of some kid wanting to take the course, but not being able to.

    OT: I'm not familiar with the 'No Child Left Behind' politics. How does that interfere with expanding childrens' horizons?


      Sandy, I am glad you refused to take money for the course. I am bothered by how much the schools expect to extract more money on top of what they get from taxes, although I am also seeing how little preparation and outside education many parents send their kids to school with. My five year old is reading as well as most second-graders, but other kindergarten kids can't even recognize thirty-six letters and numbers. It's a tough situation, and I certainly can't blame most teachers. None of the kids are dumb, they just haven't been exposed to anything useful.

      NCLB has an admirable (stated) goal, but, like most political solutions, it's abysmally stupid in both mandate and execution. It's all about testing and success in the artificial world of performing well on the test. The school where we worked is one where many kids come from dysfunctional homes and low expectations. The school's administration has been replaced by one which accepts the "reality" of the importance of scoring well on the tests, and so, many classes are now geared towards teaching children the tricks of how to get high scores on rigidly defined tests. These tricks are of questionable utility in any other context.

      Even before NCLB, much public school time was taken up with rote learning and repetition. {or worse, administrative crapola!} With very little research, you will discover the fact that this mode of education produces only short-term benefit, leading to the cycle of learn-test-forget-repeat which we all remember. Far better methodologies exist, but there are many political reasons why Skinner's methods trump Piaget's and Montessori's in the world of "public" education.

      Public education's goal is to reinforce the status quo, because the real customers aren't the children, but the government. This is not a call to become cynical, but, rather, a reality which must be dealt with. Most teachers and most parents will not accept the results produced by the system we are saddled with, and so, there is always room to find a way to make a difference. Make the most of the opportunity you have, and let us all know what you discover!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://508308]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2018-06-18 04:56 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (108 votes). Check out past polls.