Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
Take my comments for what they are. I'm not a perl genius (but I am in the hardware and software industry from an engineering point of reference) and I learned perl entirely on my own with just a few email/chat conversations about particular issues with knowledgable friends around me. These comments come mostly from the perspective of "if I were in highschool and could take this class, this is what I would hope it would be like".

I would absolutely agree with some of the other suggestions in this thread. However, I would suggest that your friend not seek to make the class and lessons "too constructed".

When I was in school, the only time a teacher could keep my attention on a subject was when they gave me the barest of knowledge about the topic, brought my attention to the available resources I may use and then didn't hold me back.

There will be students in his class who probably already have some programming experience (which will be great because those students will be excited to help other students and doing so will help re-enforce their own knowledge). There will also be those who have little or no experience but learn very quickly.

Some will learn by reading an entire volume on Perl and programming theory and then jumping in. Others will learn by asking lots of questions and putting their hands into the dough. This doesn't mean they need someone to tell them every step of the project and tell them what they *must* do and turn them into simple copy-machine kids who type in lines from a piece of paper. It means that they'll probably jump into the mix and have to ask many many questions up-front, like "What is the difference between $foo and @foo?". As they gain knowledge (and have immediate experience with that knowledge by putting it to use right away) they will have fewer and fewer questions because they'll be able to figure out a lot of things for themselves and find out where to get the answers.

Aside from boredom and more experienced (or faster learning) students becoming upset and blocking the teacher out, you want to generally keep everyone's attention. We all remember the classes that were so dull and boring (not necessarily because of the *topic*) that we just totally shut it and the teacher out. But there were others that we were active in. The teacher heavily involved us and let us go off on our own tangents and projects with just their knowledge as our resource instead of following some pre-set lesson plan.

This will be the key here. Don't come in and say "Okay. We're going to spend the first six weeks going over these worksheets learning what a scalar, array, hash, for loop, foreach, iteration, sub routine and so on are and then the next six weeks doing boring "write a program that acts like a calculator" projects. Instead, give them a quick rundown of the basics. Show them some example programs already written, clearly documented and not too complex. Then let their imaginations run wild. Each kid should be able to come up with some ideas of what he'd like to write. Let them come up with these lists and let each kid work with the teacher to decide what project on that list is the best for him to attempt.

Then let the students go on their way. When they have questions, help them out. If they forget the difference between a list and an array six times, so be it. They will learn and retain more if they are learning at the same moment they are implementing the knowledge and even moreso if it's in the process of doing something they are eager about. I may be into coming up with a dice simulation program and bash my head in if the teacher tries to make me write a program that computes how old I'll be in 10 500 days.

Of course, giving out boring worksheets with questions like "define object orientation" or "explain sub routines" is a definite killer. When they develop a neat little program or script of their own, you'll know they have a good understanding of what has been tought. Answering questions on a worksheet just shows they know how to memorize and guess. Even I (and many of us I suspect) would probably fail such a test.

When it comes to something like teaching coding, you have to aim for teaching those who want to learn the most, the most you can. Some people just aren't interested in the subject, will never grasp it and never care or need to know it. Others will eat it up and be addicted for the rest of their life. Try not to anger and frustrate the first group while not dumbing things down too much for the second.

Get the O'Reilly PERL CD BOOKSHELF and install it in the class. An EXCELLENT resource (especially if it's hosted on a class webserver or file share so everyone can go through it). Let people create perlmonks accounts (but no homework questions! ARGH!). Teach them how to read the man pages for perl. Show them where to find example code already existing.

Then just let them go at it.

When I first started, I had almost no programming experience and picked up quite a lot of perl in three months. I had an O'Reilly book and the internet and taught myself. If I can do that in three months, a bunch of kids with a dynamic teacher who doesn't force too much rigidity in the classroom by structuring every single project and every single minute of class time and dictating what the kids should do can accomplish a lot in that time. Unfortunately, my experience has been that the less a teacher knows about a subject, the more they stick to "lesson plans" because they don't know what the hell they're talking about and would rather be boring than look stupid.

It might not hurt to go from the "let's learn Perl together" angle either. Nobody ever said a teacher had to be a genius (unless this course is being presented as learning Perl from someone who really knows what they're doing).

If I where ten years younger and in a class at school learning how to program, I would have preferred to have a teacher who could mentor me. By that, I mean who would leave me alone most of the time and just be there to help me out when I ask for it. If I need more help understanding what a DESTRUCTOR is and when to use it or if I'm having trouble debugging why my value is being returned as a reference to a hash, for example. I know a lot of educators don't buy off on the "at your own pace on your own project" bit, but it really does work. You end up spending most of your time on the people who value and desire it and will gain the most from it and those who would rather be reading Seventeen Magazine and playing their Gameboys and carving choice words into the tops of their desks don't eat up the valuable resource that is a teacher.

In reply to Re: Can a non-programmer teach Perl? by Seumas
in thread Can a non-programmer teach Perl? by Ovid

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2024-03-28 14:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found