in reply to How to teach perl to novice programer
Maybe start by teaching programming using http://www.alice.org/ or http://www.squeakland.org/ or some such ( Logo Turtle ), before moving onto perl?
Below is some food for thought, a recurring theme is know-your-audience, be-a-hero(solve something they frequently encounter as they watch), teach/work towards solving a real problem that interests them
You gotta start by introducing variables(buckets), how to put stuff in them (interpolation), when they live/die (scope), ... basically do a few walk throughs of how a program runs (now the bucket is empty...)
Then move onto introducing file+folder model, how files work (files are iterators), but don't delve into readdir. Teach File::Find::Rule for obtaining a list of paths. Maybe Path::Class/Path::Tiny for working with paths. no readdir, its too low-level.
Then give overview of the process model (STDIN/STDOUT/STDERR/@ARGV) and the shell
Then have the beginner start solving that real problem they're interested in
Ask what is the goal of program? Ask what next change should do? What series of steps should play part? What input/output/result/effect? How to go organise it? ... design the program on paper before start writing it, backing up incremental improvements as you guide over beginners shoulder -- after the initial planning session (which beginner adds as comments ) you be quiet until they're done, then you review together -- ask beginner to describe step/by/step how the program works, then run the program and see what happens, then praise the things that correct, explain any misunderstandings , and make backup and have the beginner fix the program while you wait
By the time you're done with buckets you'd have 10-30 small programs, at least half typed by the beginner Each new metaphor/model/topic should start with your writing a file as beginner watches, then beginner writing a file, fixing typos, dumpering , fixing thinkos, repeat, you-review-together, you-fix-for-beginner (add comments to file explaining any typos/thinkos and how to overcome them), beginner-type-fixes .... and you end up with 10-50 small files the beginner can review
Naturally this type of 1-on-1/master/guru-style learning requires explicit agreement/willingness from both parties -- its very effective , esp if both teacher/learner are nice and positive and eager... The important dynamic to develop is STOP - Stop, Think, Observe, Plan then Act then repeat STOP ; In no time at all you'll both be thinking like computers, you'll know where to look (what to dumper), what to expect, what to call it ... how to know what you mean, ask questions the smart way
Also, while you're discussing how to solve each task/goal/step walk the beginner through RTFM-ing a couple of times, from checking the faqs( perlfaq4#How can I get the unique keys from two hashes? ) to searching the docs, to searching the perlmonks :)
Re^3: highest value in hash (virtual teddybear)
Re: Teaching Perl
Re^7: Conversion between code page and unicode in Perl
Re: Bling Bling (or: Teaching Perl to Teenagers)
Teaching Perl
Re^3: Perl Loops
Teaching a class
Teaching a CompSci student
How to Teach Perl to Scholars in the Humanities
Re: How to Teach Perl to Scholars in the Humanities
How to Teach artists Perl w/out Modules
Teaching Perl inside an Academic Course
A tutorial for Perl to teach Beginners
Perl Advocacy w.r.t Teaching
Update: Teaching Perl in the Humanities
Teaching Perl
Teaching aid pragmas (perlite?)
How to introduce 8 year olds to (Perl) programming?
Logo Foundation
squeakland : home of squeak etoys
Problematic post on teaching programming
Teaching perl over lunch
Re: Teaching perl over lunch
Teaching Perl to Children
Teaching Children How to Program
Teaching The New Generation
Teaching Perl
Teaching Perl
Good Textbook for Teaching Perl?
Bling Bling (or: Teaching Perl to Teenagers)
How do I get my teenager interested in software development?
dozens, Perl Tutorial Hub Learn to Spot a Good Tutorial
What is the best way to master perl and Where and how to start learning Perl , Modern Perl, Learn Perl in about 2 hours 30 minutes