http://www.perlmonks.org?node_id=190792

Ovid has asked for the wisdom of the Perl Monks concerning the following question:

As many of you know, our schools are cash-strapped and cannot offer students the resources that they truly need. As a result, students sometimes have history books dating from the late 70s to early 80s, are packed into classrooms like sardines, and have instructors who don't know their subject material.

I need to figure out how to deal with that last problem.

Here's the scenario as I understand it: a local high school wants to teach Perl (yay!) to some students. Unfortunately, they had no teachers who knew Perl. One teacher was "volunteered" because he knows HTML and a bit of SQL. He's never programmed before. Many of us (including myself) at one time or another have had to deal with teachers who don't know their subject matter, but this guy is in a bad situation and needs to come up to speed, fast. I'm meeting with him in about 3 days and he has 2 to 3 weeks to prepare for a 12 week class.

From what I can gather, having him back out of the class is not an option, so what can we do to help? What I have tentatively come up with the book (gasp!) "Perl and CGI for the World Wide Web" (second edition, only). This book is significantly better than the first, though it still has some serious issue. It's primary benefits are that it is easy to understand, is aimed at the non-programmer, and teaches a little bit about Web-programming which has the "gee whiz" factor that the students will relate to. I've also mentioned my online course as a supplement to cover some of the more glaring problems with the book.

The teacher is going to read through the book and he has my cell phone number for emergencies. I'm also going to send him a short article that I had started on about good programming techniques. I am concerned about his ability to pull this off, though, because he is not a programmer. All of the teaching links that I have found here have assumed that the teacher knows his or her subject matter. What suggestions can we offer him that might be of use?

Caveats: many of the students will have trouble figuring out how to turn the computer on. Any introductory book has to truly be introductory and "fun". That's why I selected Elizabeth Castro's book (I wish their was a better alternative) for him to read. Any suggestions should take into account that neither the instructor nor his students are guaranteed to have any particular background.

And be nice. I'm going to send him this link :)

Cheers,
Ovid

Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

Replies are listed 'Best First'.
(jeffa) Re: Can a non-programmer teach Perl?
by jeffa (Bishop) on Aug 17, 2002 at 00:13 UTC
    I recommend building course outlines now - your friend should not try to wing this material. Outline as much of the course lectures ahead of time as possible, and try to finish the rest of the course before it is actually over. For example, when the time for CGI.pm comes around, he should already have practiced the scripts that he will demonstrate to the class. He should also have his database tables 'ready to go' with tested scripts to pull and add data to them. He will need to do much more work than he will require his students to do.

    One of the biggest pitfalls a teacher can fall into is appearing to be incompetent in front of the students. I recommend your friend explain on the first day that he is a student as well - honesty is a darn good policy. If he has already gone over the material before hand, then he should have slightly more confidence than if he just winged it. The catch is always that one student that asks the "Question That Cannot Be Answered Right Now"™. Best to tell the class that they will discuss that next class meeting, and then he can do his homework.

    And, always, always try to have fun with it. That really helps to keep the students motivated and most importantly, interested. He also has us if he needs more resources. :)

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)
    
Re: Can a non-programmer teach Perl?
by BrowserUk (Patriarch) on Aug 17, 2002 at 00:38 UTC

    I went on a course for course givers a few years ago, and the course-giver's course giver ably demonstrated that a good lecturer can put across a short course very adequately, regardless of their familiarity with the subject matter given a few provisos:

    • The course material, slides, notes exercises etc, are well prepared by someone very familiar with the subject matter.
    • The course-giver, prepares themselves by fully familiarising themselves with that course material.
    • The audience is non-familiar with the course subject.
    • Q&A sessions are kept short, and confined to the material just (or previously) presented.

      Any questions falling outside this constraint are fended of with: "Your question is beyond the scope of this session/course, but if you would take the time to write it down and hand it in at the end of the session, I will get write up an answer for tomorrow and, time permitting, present the answer to the class at the end of tomorrows session".

      It becomes important that this is done.

      This leads to the final proviso...

    • The course-giver must have the ear of an expert between sessions to interpret, answer and explain anything that moves beyond his or her expertise.

    I'm not sure how helpful any of that is to the described situation, given kids -v- adults and 12-weeks -v- one, but provided that the class doesn't contain too many self-taught programming whiz-kids, and a source of some good course materials can be found, your friend could be ok.

    Three weeks isn't very long to prepare a 12-week course, but it should be just about enough to get the first couple of weeks ready. Hopefully, they will be able to overlap the preparation with the course and stay ahead of the game.

    Maybe the best thing you could do for your friend is ensure that they will have reliable access to this place and a "known id" that the uber-monks could be asked to keep a look out for and prioritise in the event that the 'awkward question' should arise.

    Update One additional thought that came to mind on this.

    Depending on how well the school is set up for teaching stuff using computers already, one of his biggest problems may be organising the students work online.

    If the directory structures, permissions etc. are already set up, great. If not, this could easily become a more dominant factor in devloping the course than the actual language.

    It struck me, that when it comes to organising code, Q&A's, tutorials, reference materials etc. The Everything Engine as used right here in the Monastery is probably as well developed as any other system I have encountered. I have no knowledge of what is involved in from the back end, but from the users perspective, I think it could easily accomodate most of the requirements for this sort of course.

    I just got to wondering if, given the limited time available, if it wouldn't be possible to set this up for him/her?

    I could see the tutorials section here containing the course materials. The Seekers Of Perl Wisdom as a place where homework assignment questions would be posted, with the individual students supplying their answers in the normal way.

    Most AM's that encounter the site seem to work out how to use it reasonably quickly, and most kids work these things out even quicker than their parents.

    Just a thought.


    What's this about a "crooked mitre"? I'm good at woodwork!
Re: Can a non-programmer teach Perl?
by djantzen (Priest) on Aug 17, 2002 at 00:19 UTC

    Some years back I had a Spanish instructor who, earlier in her career, had been in the position of teaching an introductory Spanish class at the high school level while taking an introductory Spanish class herself at night school. The strategy she relied upon was to take what she learned, slow it down, and pass it on. However it was critical in doing so that she had highly organized lesson plans to minimize the possibility that one of the students would take the material off course, straying from her meager knowledge at the time.

    Your friend faces a similar challenge, worse actually, since not only is he unknowledgeable about Perl, but his experience is with languages that are very different and much easier. What he'll need to avoid at all costs is some student asking "Can I also do it this way?", because the answer will very likely be "yes" (hey, it's Perl!), but he may not know why or if it's a good idea (yet).

    So, my main advice is to work very hard to nail down all the loose minutes in every class period, have a clear set of objectives to achieve every day, and a well thought out plan of how specifically to get there. Granted, this is just good teaching practice, but the advantage that a seasoned instructor (of a particular subject) has over the novice is the ability to allow students to express their creativity and curiousity, and then to lead them back home from tangents. Your friend can not realistically expect to be able to do that.

    Also, encourage him to create an account here. I'm sure I'm not the only one who would be willing to hash out lesson plans.

    Update: jeffa++ for concrete suggestions on keeping a class on track.

Re: Can a non-programmer teach Perl?
by Zaxo (Archbishop) on Aug 17, 2002 at 00:28 UTC

    Teachers can usually arrange to have a local expert in to talk to a class ;-)

    If he knows some SQL, perhaps DBI would serve as well as CGI. It has fewer magic tricks. I first learned perl with CGI, and was confused when applying functions to array references. I had to learn what was perl's normal behavior, and what was CGI magic.

    I think that the teacher should concentrate on basics in his own studies, with emphasis on where to find TFM. Get him signed up here. Show him perlop, perlsys, and perlfunc, not to memorize, but to skim and browse. 'Learning Perl' may be a better guide for the teacher, with its systematic introduction to fundamentals.

    ...many of the students will have trouble figuring out how to turn the computer on.

    Just hint that there's pr0n inside. They'll figure it out.

    Update: Corrected typo and speeling, ++jeffa.

    After Compline,
    Zaxo

      I wouldn't use DBI, and probably not CGI either to teach some beginners about perl.

      To use DBI is ok in itself, but it is kind of pointless unless the students already know some SQL and have some database to do queries against, and moreover see a reason why they would want to learn this. The teacher knows some SQL yes, but will the students grasp what is perl and what is not, and should they learn basic SQL first?

      Actually, CGI is suboptimal as well, as it kind of expects you to understand at least a little about HTML and how the web works - it is possible to learn to do some web stuff anyway of course, but it will all be very confusing as to why "this produces that result". So, same thing there, without some basic knowledge about HTML it is kind of hard to get actual understanding on what happens.

      Granted, I've not read this book mentioned, and I understand the need to capture the interest of the students, which is why CGI programming is a natural way to go - still, if they aren't already doing some experimenting with web pages, they will have problems, I'd say.

      Other books I didn't really read, only looked through at some point are Learning Perl and Learning Perl on Win32 Systems - I have to wonder if any of these aren't what would be better - at least select chapters. I seem to recall they have a chapter or two about CGI.pm and CGI programming, but they start of with how the language works.

      I guess it boils a bit down to if it is perl that should be taught, or just give the students a demostration on the "cool" stuff you can do on the web.

      Personally, I think I'd go for an approach that starts with "Hello world", and proceeds to the basic, simple funcions in perl, and then pulls in some very simple standard modules to do some simple tasks easier. I bet many of them would be as interested in having something that will sort their MP3's or something as they would creating something that will echo their name back on the web. And you should really start to echo your name back on the comand line first. :) Maybe something that would read a directory with readline first, then move up to using File::Find to do it easier and get an understanding of subs, and then even introduce to CPAN by pulling down one of those MP3 tag modules and produce some kind of table with both the filename and the name from the tag? Just one example of what the alternatives could be - if this guy gets some help of course.

      The problem with that, is of course that someone will need to set up and write that kind of course, and there is a special case here.

      The CGI approach is likely to catch their immideate attention at first, as many probably dream of doing their own communinty or some such, but without the web understanding, it is likely to leave them none the wiser, sadly. It should still be examplified at one class, so they can see that "if you learn this language, this will become possible". CGI/web is how many start programming, perl and other languages, but they usually can do some basic HTML layout first - at least those that get anywhere with that path.


      You have moved into a dark place.
      It is pitch black. You are likely to be eaten by a grue.
Re: Can a non-programmer teach Perl?
by digiryde (Pilgrim) on Aug 17, 2002 at 10:45 UTC

    Ovid - I wish your friend luck. He is in a tough spot. I have taught many years of programming and computer usage to gradeschool through high school level students. The younger students are normally far easier.

    Remember that teaching Perl is also teaching programming skills. I would assert that SQL and HTML do not provide as wide a learning experience in programming skills as do C, C++, Perl, etc. If his classes are as mixed as mine were, then he will have everything from the neophite to the script-kiddie to the programmer.

    He will need help. Being a teacher with experience, he already has the hardest classroom skill, dealing with the children. The recommendation to work with him to build the syllabus prior to the beginnning of the school year is good. With that, it would be good to have some projects pre-designed covering the potential range of the class. He will need something to keep the kids occupied while he deals with the kids needing the most help (and his own learning curve).

    Classroom handouts would be good also. The more handouts available to him to explain the subject, the easier it is going to be. An internal website for the class with explanations (think kids programming tutorial), problems and answers to those problems is always very helpful. I normally cut my work in the classroom by more than 3/4 by having easy digital documents for the kids.

    An example of concepts from one of my classes:

    1. Introduction
      • How to turn the computer on. 10 mins
        • Will deal with any prolems with the computers in the classroom.
        • Will need to walk around to one or two students normally to help
      • Using a text editor. 25 mins
      • Saving and loading file. 5 mins
      • Running a premade program. 10 mins
    2. The first programs.
      • Display a message (Whatever the student decides within reason to get them interested)
        • Typing (copying) the program into the text editor and saving the program.20 mins
        • Running the program and debugging. 10 mins
      • Ask for input and print it out.
        • Modify the program to accept input. 10 mins
        • Run the program. 5 mins
    3. ...

    As you can see, the concepts anyone can think of. The hard part is getting the timing tuned to the classroom time available (bell rings, kids settle down, start teaching, ..., kids start eyeing clock, bell rings, kids gone) 50 minutes of classroom time is normally 45 minutes of teaching time with few or no interruptions. Kids without keyboarding skills will take longer, those who already dabble in programming will get bored. The projects will help here. I would normally allow the projects to take the place of homework if the projects were completed in class in their spare time.

    What I found in my classes is the advanced kids sat doing nothing for 40 minutes per class unless I had other projects available.

    This is already getting long. If you want me to post more of the syllabus from my intro class, or just ask questions, msg me here. Good luck.

Re: Can a non-programmer teach Perl?
by theorbtwo (Prior) on Aug 17, 2002 at 01:34 UTC
    many of the students will have trouble figuring out how to turn the computer on.

    I suspect this class will end up terribly, for both the teacher and the students. It's my sugguestion that the class be recast as an introduction to computers, and the students who are signed up for it be told as soon as possible so they have time to reschedule.

    Now I'm going to tell you why I think this. This is going to be a fairly long story of what happened during a Computer Science class I took my seinor year of high school.

Re: Can a non-programmer teach Perl?
by rinceWind (Monsignor) on Aug 17, 2002 at 09:25 UTC
    Your teacher friend certainly has his work cut out for him. As others have written, producing the course skeleton is pretty essential. Over and above that, I would recommend that he defines milestones for the students to reach certain levels of understanding.

    Also, owing to the nature of Perl, I think there should be a significant component of hands-on, either 'lab classes' or homework. Getting to grok regexes for the first time does involve working a keyboard. Warning: we may get PM flooded with homework questions from this guy's students!

    Another question is how affluent or otherwise the class, and the school are. Do the students generally have a PC at home with Internet access? Does the school have a computer lab classroom with one PC each per student, or do they have to share?

    It may be worthwhile spending part of the first lesson explaining how to download and install ActiveState Perl from the Internet. Or, the school may have some Unix servers on which the students can log in and try their perl.

    Good luck to this guy, and to you Ovid in your endeavour.

      Sigh. Every time I write this node, for some reason, I forget to hit "sumbit" after previewing. Hopefuly I'll stop being idiotic and plauged by poor server response times.

      There are two important parts to teaching programming, esp. at a HS level. They are breaking down the problem into smaller pieces, and finding the solutions to those smaller pieces using the resources available (experementation, existing knowlage, reference materials, and other people). Actualy adding to their knowlage is a fairly minor piece of the puzzle. Fornatly, these are things that can be taught by a nonprogrammer; they are the same skills that any sort of problem-solving requires, which is why they are such important skills to teach.

      The reason that your post, riceWind, made me think of this view is quite simple: perlmonks is a very important place to find reference and other people to help solve those refactored problems. Students should be shown perlmonks... not only will this help them with the process of learning perl, and learning to program, it will keep them from going here to ask "here's my homework problem, how do I do it", unless they are total idiots.


      Confession: It does an Immortal Body good.

Re: Can a non-programmer teach Perl?
by clintp (Curate) on Aug 17, 2002 at 16:08 UTC
    If he hasn't spent his book budget, perhaps he can take a look at my Teach Yourself Perl in 24 Hours book. I know it's used in quite a few community colleges as an introduction to Perl and programming and it might be instructive for this also. It's purposefully written not to leave anyone behind, but not insult your intelligence or patronize. It also doesn't teach (or mention) any more Perl than you need to get going.

    That being said, some advice from teaching rank beginners:

    • The earlier comment about being honest: yes be honest, but don't put down the material or they'll think the *material* is stupid and not learn. Being a teacher he probably knows this already though.
    • Work through the exercises well in advance, remembering that even with a not-so-hip group, he's going to have 20 other opinions on how something could be done. And in Perl it's likely that most of them are right. Or at least syntatically correct. :)
    • He needs to be able to get a hold of *you* or another friend to ask "we'll talk about that tomorrow" questions. Posting to PerlMonks or Usenet would be a *terrible* way for him to get information and dispense it second hand. It has to be consistant (if not completely correct) and tailor made for his lesson plan.
    And one final suggestion: paired programming. With students (espeically younger ones) you get the one-does-all-the-work the other-just-watches effect as a downside.

    But on the upside they're talking about what they're doing and when Perl's scary and confusing syntax confuses them at least they'll have another point of view, try different combinations, pass the keyboard back and forth, and do *something* to try to break the mental roadblock. And they won't feel so silly asking stupid questions about why such-and-such won't compile.

    But that's a fine balancing act with younger students.

      If you're going to have groups (which is pretty well unavoidable if you've got more kids then computers, which from the sound of things, you will), I'd suggest making them yourself, and changing them. That way, even if you get one kid who always does all the work in his group, the /same/ kids won't keep getting a free ride (and less of a learning experince).

      Of course, the teacher in question has taught a fair bit before, so should know this... right?


      Confession: It does an Immortal Body good.

        Conversely, if you've got a couple who just *aren't* going to learn for whatever reason (terminal disinterest and lack of trying) you can pair them together and prevent them from being a boat-anchor to others.
Re: Can a non-programmer teach Perl?
by hsmyers (Canon) on Aug 17, 2002 at 15:27 UTC

    It occurs to me that while most of the advice given will possibly work, none of them strike me as being much fun-- for neither your unfortunate friend nor his potential students. Were I you, the advice I would give would be two part. Firstly, prepare for the class in as professional a manner as possible, which presumably would cover many of the suggestions thus far. Secondly, establish at the onset that the class would be a collabrative effort, i.e. EVERYONE is there to learn Perl. The notion that students teach not just themselves but even the teacher might be just the thing that pulls this trick off!

    --hsm

    "Never try to teach a pig to sing...it wastes your time and it annoys the pig."
      EVERYONE is there to learn Perl. The notion that students teach not just themselves but even the teacher might be just the thing that pulls this trick off!

      I taught at a junior college for a year and a half. One of the things I told my students on day 1 is that I did NOT know everything there was to know about "language X". I told them I was there to learn as well as to teach.

      Also...while this person will be in front of the class as the "expert" on the subject, there are times when saying "I don't know" will earn more respect than trying to BS your way through an answer.

      There is nothing worse than being called out as a fraud in class. :-)

      I definitely agree with being prepared and not trying to wing it. He needs to work through every example he'll give in class...

      mike
Re: Can a non-programmer teach Perl?
by jordanh (Chaplain) on Aug 17, 2002 at 15:28 UTC
    As others have pointed out this is quite a challenge for the teacher. It's good that this teacher knows a bit of HTML and SQL, at least the teacher will be able to get around an editor, even if just barely. This is an important hurdle.

    I think the choice of teaching Perl and CGI is a good way to approach it. Students are definitely going to be uninterested if they can't write programs that do something demonstrable, something they can see themselves and show to other people. As you say the "gee whiz" factor is high. The typical editing text files of most introductory Perl does not fit this bill.

    Have you considered the configuration and care of the Web Server they'll be using? It'd be cool if they have Linux or *BSD so that you could easily manage it remotely and look into the problems, but the Server is an additional cost to the setup of this class.

    I've done a bit of volunteering and seen a lot more. One piece of advice. See if you can get together a support group to help with this project. As others have recommended, recommend that they have speakers in the class giving lessons, showing advanced examples to inspire, etc. Definitely, try to find someone to help with the questions and setup problems. It's more important that you can keep helping out rather than just burn out and stop altogether.

Re: Can a non-programmer teach Perl?
by majin (Acolyte) on Aug 17, 2002 at 19:32 UTC
    I am currently in high school and am one of those "self-taught whiz kids" who has learned such languages as HTML (I do not consider this a real programming language now as even the most remedial person can learn it), C/C++, JAVA, and am ccurrently learning Perl. I have also attended many courses offered by my high school on programming and computers and from my experience I can tell you this:

    1) It is important that he does not show that he does not know his subject
    2) It is also important that he answers ALL of the questions asked by the kids
    3) And lastly he should tell them that if anybody in here would like to correct me they can

    And I know a lot of self-taught programmers in my school and we always find that teachers who show that they do not know their subject will be often ridiculed by all the kids, even those who have never had any previous experience with the language


    Majin

      "It is important that he does not show that he does not know his subject"

      It seems to me that this will do more harm than good, because he does not know his subject. Since he does not know his subject, he eventually will slip, and might get caught in the act of lying. And if the students catch him lying, how can they trust him? Like i said before, honesty is the best policy.

      "It is also important that he answers ALL of the questions asked by the kids"

      While it is important to answer most of the questions - it is more important to know when to answer questions. Off topic questions and questions that will stump him should be overruled - "Let's talk about that after class." "I would love to answer that right now, but we only have 10 minutes left and the test is this Friday - besides, that won't be on the test anyway." He needs to be careful to not get caught in a pattern of wasting time entertaining each and every question/whim of the students, or nothing will be taught.

      While i don't necessarily agree with your first two suggestions, i heartily agree with the third. A good teacher knows that she/he is a student as well, and can learn a thing or two from their students. Leave the ego at the door, it only gets in the way - but this goes for the students as well, cheap shots at the teacher to impress fellow students may gain you a bit of respect from them, but that respect lasts no more than the lifetime of the course. It just ain't worth it. (Kid Gloves, anyone?)

      I myself was a bit of a 'self-taught whiz kid' (and an arrogant one at that) - my tool was an Apple ][+ back in 1986. These days however, whiz kids are much more abundant (and much more arrogant) thanks to items such as Windows and the Internet. I think that this teacher needs to identify the whiz kids on the first day of class and ask them to stick around after class - he should then explain to them in a most respectful manner that he is a newbie and needs their help. He needs to convince these talented kids that they will get more out of the class by supporting him instead of heckling him. Hopefully, there won't be any whiz kids. ;)

      And yes, sometimes teachers will be called out and ridiculed if they expose that they do not know their stuff. In high school it happens because kids hate authority, but it is worse in college because the students are paying money. I have been a heckler myself - but it was me that lost in the long run, because even though a particular teacher/professor might not have been as knowledgable in the subject as i liked, i failed to 'make my own lemonade.' Now ... teachers/professors that don't care are a completely different matter - in high school, tough luck - but in college, drop. Wait till a better professor teaches if you can.

      jeffa

      Glad he is not in high school anymore. :)
        I see your point but maybe I should clarify on one point, the teacher should answer all questions but not necesarrily in the same class period and thus meaning that he should write down the questions asked to him and try to answer them as the asker might ask the question again and thus lower the reputation of the teacher. And yes he should talk to the whiz kids first but hopefully there shall be only one as whiz kids get more arrogant in front of other whiz kids (speaking from personal experience ;) . Also you should tell the teacher to pick up little tricks of the trade that might impress the whiz kids and thus bringing them onto his side.

        Majin
      While I agree with you that HTML isn't a real programming language, I disagree with your reason. Whether something is a programming language (I'll leave out the 'real', unless you can indicate what "unreal" programming languages are) isn't related to how many people can lear it or not. HTML isn't a programming language. It doesn't calculate or drive anything, not in the most remote meaning of those words. It only describes a document - it's a language, but not a programming language.

      As for the most remedial person can learn HTML, you'd be surprised how few people actually know HTML. Even after 7 years, the programmers at Netscape still cannot fully parse HTML.

      Abigail

        Virtually anything described in a marketing document.

        Oh, there may be another language, vaguely similar, of the same name at some point. But it certainly won't be the silver bullet promised...

Re: Can a non-programmer teach Perl?
by Popcorn Dave (Abbot) on Aug 18, 2002 at 00:02 UTC
    Boy, your friend must be trying to gain sainthood huh? :)

    As others have said, having a teacher trying to bluff their way through things ends up making the class a horrible experince. I ran in to a similar experience in Junior College many, many years ago with an advanced electronics class. They brought in a teacher who had been in industry all his life, never taught, and threw him in to an advanced class. Not good. Most of the class ignored him and one fellow spent the entire semester designing an add-on device for a joystick.

    The one thing that your friend has going for him at this point is you. The lesson plan idea is a must I would agree. And gearing it towards something that the kids can actually use is going to be imperative. Maybe 1 out of the whole class is going to be interested in writing Perl programs that actually do something ( hopefully more will ) but the rest of the class is going to be bored to tears unless they can see some practical thing they can get out of it.

    The other thing your friend should watch out for is the "hacker wannabes" that are bound to be there.

    Now if you're assuming that the class doesn't even know how to turn on the pc, you're up against a rough road to begin with. Probably the best thing to do is to whet their appetites to Perl. Open their eyes. Show what can be done and maybe some will take to it and go on from there.

    And as a last resort, and I'm almost hesitant to suggest this, but... you could suggest the monestary for support. Although the last thing anyone wants is a bunch of people asking for answers to homework, I know, but like I said, even if 1 out of 15 picks up and takes to Perl, that's one more than before.

    I wish your friend the best of luck!

    Some people fall from grace. I prefer a running start...

Re: Can a non-programmer teach Perl?
by Jim Morrison (Novice) on Aug 17, 2002 at 00:16 UTC
    Excelent thoughts except they describe your own location and do not reflect other parts of our small yet huge globe.

    I am on the very different side, and I'm wondering whether perl will enter into our school system at all...

Re: Can a non-programmer teach Perl?
by Abigail-II (Bishop) on Aug 19, 2002 at 12:35 UTC
    My first reaction is "Oh boy, why?".
    Here's the scenario as I understand it: a local high school wants to teach Perl (yay!) to some students. Unfortunately, they had no teachers who knew Perl.
    This begs the question: why does the high school want the teach Perl if noone knows Perl? How can they know it's something useful for the students? This smells very much like "We got to appear cool. We got to give out students web. Perl is web".

    This has disaster written in big blinking bold letters written all over it. Who should gain by this? The students? Not very likely - high school students are about the worst students you can find; they are hard to motivy (because of their age, and because they are in school all day anyway) - you need one hell of a teacher to teach something he doesn't know, and what will be unappealing for most of the students. (Just like most of the students will not like chemistry, math or English literature). Will the teacher gain by this exercise? Unlikely. He will have to put a lot of work into preparation, with probably a little result.

    Will the Perl community gain by this? Not at all. At best, the students will just attent the classes, and then file it as a horrible experience they had to live though. At worst, the community will get more bad "web designers" who think they need Perl to write webapplications, and clutter forums like this with questions like "I downloaded this script from Matt Wrights archive and it doesn't work....".

    I pity the teacher.

    Abigail

      This begs the question: why does the high school want the teach Perl if noone knows Perl?

      Consider the kinds of people who make these decisions at schools and you have your answer.

      --
      tbone1
      As God is my witness, I thought turkeys could fly.

Re: Can a non-programmer teach Perl?
by Anonymous Monk on Aug 18, 2002 at 17:45 UTC
    I have two suggestions:
    1. I am teaching myself Perl right now, and have found the following tutorial very thorough: http://www.ebb.org/PickingUpPerl/
    There are several versions, PDF, HTML "chapters", one huge HTML file my preference, and maybe some others. I was a Computer Science major in college myself, so maybe i'm overestimating how readable it is.
    2. Go to college web sites and use those as a model. Obviously a high school course will go at a much slower pace, but these should give the teacher some good ideas of the basics. Just pick a college and go to its cs department's web site, cs.<college>.edu and find the intro CS course.
    2.5 There are many programs that I have always been assigned when learning a new language that help you grasp the basics. These include factorial (10! = 10*9*8*7*..*1 = 3628800) and calculating the fibonacci sequence (a set in which each number is the sum of the two previous numbers, beginning with {0, 1}, that is, 0, 1, 1, 2, 3, 5, 8, 13, 21... hope this helps, greg
      There are many programs that I have always been assigned when learning a new language that help you grasp the basics.
      Odd that both examples you gave are usually the ones that programming books give to teach recursion. I wouldn't exactly call that a basic topic for most new-to-programming types. I always mention recursion and dance around it for a little while to expand a few brains in the audience. Then take those students who are prepared for it (aside) on an adventure through factorials, fibonacci, reversing strings/arrays (non-perl classes), and to cut the wheat from the chaff: Towers of Hanoi.

      It's terribly useful when you need it, it's good that they're aware of it even to point out some uses (trees, etc...) but when they're busy grasping the concept of what a subroutine/function is, it can be a but much. Forget recursion for most, come back to it later when you can traverse directory structures or search b-trees or something.

      PS: The other problem I've had with Fibonacci and factorials in particular is they're terribly easy to program, but they're not useful in everyday life. If I have to explain the math (which with those two to an average audience, I usually do) it's not worth the trip.

Re: Can a non-programmer teach Perl?
by toma (Vicar) on Aug 19, 2002 at 05:57 UTC
    I would suggest that the teacher go right to perl's true strength, which is text processing. There is a tremendous amount of text at Project Gutenberg, so that part is taken care of. Download text and analyze it.

    First, get through "Hello, World," Then, explain this program, using a chunk of Moby Dick as input:

    while(<>) { if (/Ahab/) { print $_; } }
    Introduce scalars, arrays, and hashes, all as ways to enhance the analysis of text.

    Have the one of the more advanced students show the others how to turn a program into a CGI. Then have another advanced student explain the concept of taint. No one will understand it, but it will be impressive and give the student a reputation as an uber-hacker.

    To finish off the semester, introduce the concept of modules and show off fuzzy string matching with String::Approx.

    If you have a truly gifted student in the class, ask him or her to write a program to answer certain simple questions about Moby Dick.

    This course can work out very well. The trick is to show students how to make simple things simple. Web programming and databases are far more complex than the course needs to be. Just put perl to work on plain ASCII text, and let it roll.

    I'll be teaching high school computing this year also, so I hope to see more posts about your friend's course. I plan on covering perl (just for text processing), MACSYMA (as a companion to second year algebra), and Octave (to crunch a few numbers and draw some graphs).

    It should work perfectly the first time! - toma

Re: Can a non-programmer teach Perl?
by Seumas (Curate) on Aug 19, 2002 at 00:44 UTC
    Damn, I guess things have really progressed. When I was in school (even highschool), all we had were those crappy old black-and-white all-in-one (the monitor, computer in a single box) Macintoshes (se's?) and we spent the class typing from sheets (aa aba abb abac abacd abacac ad ada adab adah adadh adhaha hjajka ajkaajajhja) while the teacher played SimCity on his.

    I always figured that by highschool, they'd have decided that ten years of typing classes were enough for everyone and let us move on to something else. Seems that any time I tried to do something different (since I typed about 90wpm at the time), like sneaking a copy of Turbo Pascal onto the mac and writing a graphically animated slot machine program during computer(typing -ahem-) class, I was in huge trouble for "not doing what you were told".

    Oh well. Now days kids aren't even interested in coding it seems. All the kids I know (in my family and elsewhere) have little interest beyond surfing the web and chatting on AIM. Figuring out how to use things and how the computer works and actually coding just requires too much "learning" and effort.
Re: Can a non-programmer teach Perl?
by Rex(Wrecks) (Curate) on Aug 19, 2002 at 23:56 UTC
    Caveats: many of the students will have trouble figuring out how to turn the computer on.

    This kinda scares me, I would recommend your teacher only allow students who have taken whatever "basics of computers" as a minimum prerequisite to attend this class. There is no way any students are going to get anything out of a "programming class" when the speed and content is hindered by questions like "where is the 'any' key?"

    I know you said be nice, and I'm trying, but this does not look like a well thought out idea. It's like taking Calculus before ever taking a basic Algebra class, and the students will get about the same amount out of it.

    If this class is to succeed it needs to have some prerequisites, otherwise it is a waste of your teachers, and students, time.

    "Nothing is sure but death and taxes" I say combine the two and its death to all taxes!
Re: Can a non-programmer teach Perl?
by jirwin (Monk) on Aug 19, 2002 at 22:25 UTC
    I had a boss that used to say "you're teaching this in 2 weeks". Many people have commented that it is essential to have an outline to follow. I used to spend a couple of hours the evening before the class going over the material. I found that inevitably there were a couple of people who lagged, a bunch of people who would keep on track and a couple of people who would be way ahead of schedule. I quickly came to realize that I needed to have a bunch of little projects to keep the quicker people occupied while the rest caught up. You might want to direct the teacher to the Q&A section of the Monastery Jeff
Re: Can a non-programmer teach Perl?
by Seumas (Curate) on Aug 20, 2002 at 02:08 UTC
    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.
Re: Can a non-programmer teach Perl?
by cybear (Monk) on Aug 19, 2002 at 11:16 UTC
    To teach a subject that you are not familure with takes great skill.
    but is certainly possible.

    I agree with the suggestion that your friend should be upfront
    with his students; admit that he is learning; emphasize that he
    is there to learn, just as the kids are.

    I agree that troublemakers should be teamed together in the back of
    the class. They will likely prefer to be in the back anyway
    and it will cause less distraction for the rest of the class.

    I recommend, since your friend knows some HTML, USE IT!
    Start the kids using CGI and make their first assignment
    getting the computer to say "HELLO WORLD" on a web page.
    That will SEEM much, much cooler that just saying "HELLO WORLD"
    on a command line.

    Start out with something useful and "COOL" then work backwards and
    teach the concepts after... this has always been much more effective
    for me.

Re: Can a non-programmer teach Perl?
by Anonymous Monk on Aug 19, 2002 at 11:49 UTC
    I read E. Castro's book when I was starting to learn perl and for a number of reasons was not very happy with it. To say the least, I could not get the hang of what programming was really all about, which could be a huge problem for a person who has had no previous programming experience. One book that has over and over been recommended as a good introduction to perl for non programmers is Elements of Programming with Perl, http://www.manning.com/Johnson/. Also you might want to have a look at How to Think Like a Computer Scientist: Learning with Python (http://www.greenteapress.com/thinkpython.html) which gives a great introduction to programming in general, each chapter ends with a glossary and can serve as a great reference. It is available for free download online. Good luck!