Python for non-programmers
donn at u.washington.edu
Wed Mar 1 17:58:07 CET 2000
Quoth "Dennis E. Hamilton" <infonuovo at email.com>:
| I am teaching my 35-year-old son about programming using Python. He is a
| musician and has learned to do impressive things with the DVD + CD-RW + SB
| Live! on the Windows system that I set up for him. He does his own web
| pages, surfs a lot, and can get around pretty well. He wanted to know how
| to do more and learn how people do multi-media, game animation, and so on.
| I figured this was a good occasion to get involved with Python for some
| projects I have and as a learning laboratory for him, rather than getting
| into C Language, GUI object manipulation, etc.
| Yesterday, I sat next to him as he used Python and started to go through the
| tutorial, me making notes on my desktop machine and him trying to figure out
| things on my laptop next to it.
| I learned a lot. One thing is that the tutorial is full of things (I called
| it toolcraft in a different conversation here) that are meaningless for
| someone in Doug's shoes but leave him thinking that he is supposed to know
| what is being discussed. This was discouraging for him. It was an
| eye-opener for me. I have a list of all the terms (from shell to
| object-oriented) that have no context for non-programmers. I just skip past
| that stuff when I run into it. It is in the noise for me. He doesn't know
| that. I told him to treat it all as yack-yack-yack and just look for things
| that provided examples or gave him some things to do. That helped him get
| through to section 2.1 but things got tough around section 2.1.1 where there
| was no way to get through what was being talked about without more
| grounding. ("Argument," for Pete's sake!)
| So, I talked him through a "hello world" exercise, after organizing a
| Python/Projects folder enough so that he can see what corresponds to Python
| libraries and modules. This is without getting too technical about it. I
| want him to have enough about library organization just so he can get by for
| now, with deepening after as he gets some confidence with basic operations.
| He knows to make __init__.py files but not why. I wanted him to have a
| basic setup where he could begin self-guided activity and see useful results
| that can also be grown to bigger projects and organized work.
| He can see how to get in and out of the interpreter. I showed him the DOS
| editor and we built a "hello.py". We ran it from the python command line
| and by importing it in the "interactive mode."
| I set him up with 4DOS just because it is a little easier to know where you
| are and explore inside a command shell. (I figure learning about console
| mode would be an easier way to have useful work in python before dealing
| with the GUI and the fledgling IDEs available for Python).
| But mostly we learned things that one could also do using the MS-DOS
| command.com shell. He doesn't know what either of those are, but he knows
| how to start a shell and start working with files and the python processor.
| If we practice more today and tomorrow, while he is visiting me from
| Portland, I figure he will be able to sustain himself when he is back home
| next week, especially with me as a telephone and Instant-Messenger and
| NetMeeting consultant.
| He saw me use Python like a calculator, and he saw me assign strings and
| calculation results to variables an reuse them. He was fading fast (I need
| to make the first steps smaller yet leave him in accomplishment), but he was
| intrigued and I need to walk him through it again.
| That was more than enough for a first time out. If there were any good toy
| applications that did useful things around, I could have him doing engaging
| things at the console shell and python level that he could learn to analyze
| and replicate later. (I don't care if it is simply playing Hangman, or
| tic-tac-toe or How Many Petals Around the Rose, something that is a complete
| thing which can be used without having anything to do with building
| He was tired and I was overwhelmed by how much we geeks operate on assumed
| understanding and an incredible amount of unexplainable lore. I saw that
| his Windows knowledge is spotty -- there are things that he has missed so
| far, such as the right-click menus and ability to make new documents and
| folders. He didn't know about the wheel on the wheel mouse to help with
| scrolling. Just the same, he has picked up ways to get around in Windows
| applications and can get by (that's part of Windows usability). He hasn't a
| very coherent model and doesn't have a confident way to learn more. Yet
| Doug is the kind of guy who *does* read manuals and he does work through
| tutorials, but he has, after 8 months with his own computer, mostly
| developed a personal craft based on things that were discovered to work for
| him. He watches me and others with more experience and he picks up more
| craft all of the time.
| This has really brought me up short about what it takes to introduce
| something like Python to a non-programmer (or even a programmer with a whole
| different paradigm of computer use, operation, and programming). I have to
| shed all of my intuitions, developed over 40 years around these fascinating
| mechanisms, and learn to see through his eyes. That is daunting!
| Doug has called the two of us the cybersmiths. He was remarking on how, in
| the past the blacksmith's kids would learn smithing from their dad by
| hanging out and watching and developing a trade, absorbing the smithie's
| toolcraft. He sees himself as an apprentice cybersmith. I like that. Now
| I am looking at what would make his experience more successful and
Following up here mainly just as an excuse to re-post this great article!
One of the things I get out of this is that the basic question, ``how can
we teach someone to program a computer'' is not as much about the design
of a programming language as we sometimes think. All the paraphernalia
and jargon surrounding the act of programming is as big an obstacle, and
more so than it used to be.
When I started, we would present a deck of cards, with 5 or 6 control
cards at the front. The FORTRAN program might very well be right there
in the deck (I remember my Botany professor was a little peeved that
I had been compiling his statistical clustering program with every run
rather than saving to disk, but I didn't know about disks; anyway, I
learned a lot about FORTRAN when I accidentally dropped that deck in
the street!) That must seem like the quintessential propeller-head scene,
but I suspect it's much simpler than running your own program on your
own data on Windows 98 today, by orders of magnitude, if you figure all
the things you have to learn starting from nothing. In my own efforts
to teach a programming language I found it was really hard to make any
assumptions about how much people knew about the context - some knew
more than I, others were totally unprepared.
Donn Cave, University Computing Services, University of Washington
donn at u.washington.edu
More information about the Python-list