Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Teaching a class

by jonjacobmoon (Pilgrim)
on Jan 25, 2002 at 22:51 UTC ( #141587=perlmeditation: print w/replies, xml ) Need Help??

I have been recruited to teach a beginning Perl course to at risk, but bright, youths. I think I will use the O'Reily Learning Perl book at least in part and find some sort of short cheat sheet type thing for the intro to Linux part.

So, my question is a two parter: 1) Does anyone have any other suggestions for course material and 2) Does anyone have experience teaching a beginning course and have any words of monkly wisdom to share on the subject.


I admit it, I am Paco.

Replies are listed 'Best First'.
Re: Teaching a class
by dhable (Monk) on Jan 25, 2002 at 23:00 UTC

    Excellent! We need more people from the tech community to mentor and teach the next generation. I was recruited to do a similar class, but I had to teach in VB(agh....stupid school site license). I found that most kids are intrested in two things: 1) They want some sort of finished product that they can use and 2) video games are very exciting to them.

    Since your using Perl, you might be able to do a web based project with them. Something like a message board or very simple chat program. Just make sure that when your done teaching them, they have something that they can use and show off.

    Good luck!

      I agree completely. There is nothing more boring then learning programming by making useless programs. I got my start in C++ doing just that, and eventually it becomes very tiresome making lame programs that don't do much of anything other than prove a concept. By contrast when I got into Perl I instantly found it extremely useful, and picked up on many things really quick. Basically I think that if you come up with some interesting and useful assignments, that they'll be much more willing to learn.
      Just make sure that when your done teaching them, they have something that they can use and show off.

      IMHO, a very wise advice!

      Database stuff like CD-Collection, Address-Collection, etc. pp. is quiet boring, but maybe I was exposed to too many beginners books for different languages.

      If you want to do a real interesting project teach them something they can't do with software bought from the shelf.
      Teach them magic.
      E.g. Showing them how they as consumers can master the WWW with the help of libwww or WWW:Search could be the killer application for beginners.
      If you teach them that everbody can become a magican with the help of perl, they will love it.

      Hanamaki
(jeffa) Re: Teaching a class
by jeffa (Bishop) on Jan 25, 2002 at 23:01 UTC
    The only advice i can offer is to make sure that you tailor your examples to your audience. CD, MP3, and DVD collections are fun topics and should keep your audience's attention. I would stay away from port scanners and packet sniffers, though. ;)

    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: Teaching a class
by VSarkiss (Monsignor) on Jan 26, 2002 at 01:26 UTC

    I've only taught classes to people who already knew how to program and wanted/had to learn Perl. In other words, I've never taught "How to program" using Perl, only "How to use Perl" if you're already a programmer. You don't say so explicitly, but I presume you're in the former camp. (I've taught "beginning programming" classes, but not with Perl.)

    You may want to consider a specific area to concentrate on, rather than everything at once, or an academic approach to CS. In beginning classes, I've found it very useful to have a "class project" or "term project" to focus on, which allows you to introduce the motivation for particular subjects. Let me illustrate with a couple of examples.

    Let's say you pick "A program to help you organize your CD collection" as the final project. Some subjects you could teach from here are data structures (how do you represent the CD collection in memory?), object persistence (when you buy a new CD, how do you save it in the database?), user interface design (what's a nice way to look for songs and CDs?) and so on.

    Another example would be "A web site that lets your friends sign your guestbook with comments." A good topic for one or more classes would be authentication (How do you know this visitor is who s/he claims to be?) Object persistence and UI design are big parts again, but this emphasizes CGI and web interfaces over databases.

    With any of these topics you need to introduce variables ("How do we represent a visitor/CD in our program?") and control structures ("How do we make a list of every visitor/CD?") but the project gives you a context.

    Of course, a lot of what you select depends on the resources available to you: computers, connectivity, databases, class time, how much time you can dedicate to answering questions outside class, and so on.

    In summary, pick a (relatively) sizable chunk of code to deliver by the end of the course. Write it yourself, so you know there's no hidden gotchas (at least write big parts of it). Then organize it into topics, and you've got your syllabus.

    Then the hard part starts. ;-)

Re: Teaching a class
by chromatic (Archbishop) on Jan 26, 2002 at 08:32 UTC
      I downloaded it to take a look but cannot find a version of sgmltools-2 for redhat. Message me if you know where I can find it.


      I admit it, I am Paco.
Re: Teaching a class
by seanbo (Chaplain) on Jan 26, 2002 at 05:53 UTC
Re: Teaching a class
by ralphie (Friar) on Jan 26, 2002 at 23:03 UTC
    i like hanamaki's suggestion ... everyone knows the web, and the ease with which you could get them generating tangible material is compelling feedback. it might be worth a thought to start with simple html to provide that and launch into perl both as an elaboration and as an extension into something new.

    rather than getting too wound up in defining your course materials up front, you may want to let them lead you. as the group finds something that excites it, select your course material to feed into and enhance that, using your expertise both to shape where they are going and as an experienced eye on the horizon, showing them how waht they've done aligns with what is out there.

    guide rather than direct, 'cause the least effective strategy for a group like that would be to push them into the channel you've created.

    i wish you luck, you've accepted a challenge that rivals the most daunting programming problem. i think many here would be happy if you continue to bounce ideas off our cloistered beans.

Re: Teaching a class
by hsweet (Pilgrim) on Jan 28, 2002 at 07:03 UTC

    I'm about to embark (tomorrow in fact) on a Perl revamp of my programming course in a public high school. The last time I did this a couple of years ago it was with Visual Basic. I wasn't too happy with my results since half of the class could not code a program that counted after a semester. And that was after a semester programming simple video games.

    I'm going to try to start out focusing on the language connections. Verbs ~= statements and nouns ~=variables and stay clear of a lot of math stuff unless the kids seem good at that end of things. This group I already have taught HTML and the 1st 1/2 inch of CGI + they all have access to a class web server so I plan on having them do some web stuff eventually. Haven't decided what.

    As for books, I plan on using Sam's Teach Yourself Perl in 24 hours. I learned a lot from it. It was a great intro to the language.

    If there are 2 of us getting started with this, we should compare notes, share assignment ideas over the next couple of months. I will have the beginnings of a web site for the class posted tomorrow. Probably at ghs.gcsny.org/~hsweet/ (I may stick it somewhere else, but I'll have a link at ghs.gcsny.org/class_sites.shtml. I'd appreciate any feedback. Feel free to use anything there if you think it is helpful.

    One of the biggest advantages of Perl over VB is that I can give to the kids the first day of class (I burned some CD's). I did have some kids who showed some ability and interest in VB, but all I could tell them was that they could get it at home if they were willing to fork over a hundred bucks to Bill. No one ever did. I'm thrilled that I can do this and give the little scholors homework!

    <address>Ignorance with Confidence</address>
Re: Teaching a class
by cecil36 (Pilgrim) on Jan 27, 2002 at 09:51 UTC
    I agree with your choice for textbook to use in the class. I just picked up the O'Reilly Learning Perl book because I found it to be less intimidating than the main Perl reference manual. I'm not sure if you would want it in your class, but as an optional reference, you could also look into Perl for Dummies. If the students need a Perl interpreter, they can get the ActiveState interpreter and perl 5.6.1 with Perl for Dummies. They can also go get perl 5.6.1 as a package option when downloading Cygwin. I would also go along with the other suggestions for projects that the other Monks have left in response to your questions.

    One suggestion I have for a project is to have the students write a script that extracts information out of a database or off a web page and formats it in a file with headers for either e-mailing or paging. Assume that another programmer has developed the software that will send the messages, and the students are to write the program that creates the message files with the extracted info. As an additional requirement, all message files are to be numbered to avoid overwriting of previous messages created. The students can use File::CounterFile, or write the file numbering routine themselves under the assumption that the program will not be shared on a network.
Re: Teaching a class
by markmoon (Deacon) on Jan 26, 2002 at 02:18 UTC
    Lincoln Stein's Guide to CGI.pm would probably be a good book to have. If the kids have a chance to put their work in front of other people (outside of the class), it could lead to more opps for encouraging feedback from friends or family. I think kids like to see things happen and an email that they receive in response to a form they've created could help push them to see what else they can make happen.
      I'd have to second that. I've been up in front of kids of this sort, for a science demonstration/lecture. The more visible and public the results the better. Most kids will have non coder friends and family. Those friends and family will be duly impressed with about any page jr does, and will apply some genuine positive feedback to the kids.
      Its a thought, but I would think the CGI.pm might be a little advanced for these kids.


      I admit it, I am Paco.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://141587]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (2)
As of 2022-05-22 15:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (80 votes). Check out past polls.

    Notices?