Programming For Terrified Adults?
makeitreal writes "My mom is getting bored with learning the basics of email and has mastered Solitaire. She asked me what I do on my computer and I told her that I was teaching myself programming in Scheme. She expressed an interest in learning what I was doing, but I tried to teach it to her with the HtDP and we didn't even get past the introductory chapter. Everything I've looked at so far seems too complicated (Scheme, Python, VB) or too childish (Logo, Squeak, Lego Mindstorms). Is there anything in the middle that is also cheap/free and suitable for adults? Or should I give up the whole idea?"
is a good choice...
Some days I get the sinking feeling Orwell was an optimist.
Teach her HTML, CSS, and javascript. Useful and rather simple. It also provides a launching pad into the not-to-difficult php, or, if she's a savant --perl. Javascript is a nice intro to basic programming concepts (functions, statements, operatos and logic)
harmonious design
HTML isn't terribly complicated, and there are lots of options for people just starting out. They can get more advanced and do the HTML coding themselves, or even transition into something like PHP eventually. Have her start making a webpage about her hobbies, and she'll feel somewhat advanced. Heck, after a while she might be maintaining her own web server.
Seriously, what's wrong with Logo? It's a great primer for programming. It lets people perfectly associate programatic statements to actions. Very very good primer.
What a wonderful twist of fate: kids asking for something easy to teach their parents....
It doesn't matter if it's "childish". As long as it teaches the basic programming concepts (e.g. variables, functions, loops, if-then structures and controls, etc), then that should be okay to get to the fundamentals. There is so much abstraction in programming and I believe the most efficient way to learn it (as an adult) is to be able to relate the concepts in concrete ways.
There is nothing childish about Squeak or Logo. Squeak is a complex, high-powered Smalltalk development environment. I'd consider it too complex for beginning programmers, although I gather some people are using it for teaching introductory courses. And despite its innocent appearance, Logo is a powerful programming language.
But why not pick some language she might actually use for something? PHP or JavaScript might be a good choice. Or the Macromedia Flash scripting language--that way, she could make animations.
If she really wants to learn it as an intellectual exercise, I'd just stick with Scheme for her--there are good learning environments and tons of materials for learning programming with Scheme.
but what about Impress or god forbid powerpoint.. creating a presentation is fairly easy, yet can involve creativity and a sense of power over your computer.
wud
Why programming? Why not master word processing, spreadsheets, graphics and design programs, etc. I think learning Power-Point, Adobe Photoshop, or DreamWeaver would be more immediately useful and rewarding to such a person.
Table-ized A.I.
She is just trying to reach you and understand you more.
What it probably means is this: Take her out more often then just once a year you geek!
Don't focus on dhtml or anything beyond the scope of the language. You want an easy learning curve giving her skills she can use everywhere. On its own, JavaScript is a very simple, powerful, and forgiving language, who's syntax closely resembles most of the other mainstream programming languages.
Good luck. I'm still trying to teach my mom to program. And she has a bachelor's degree in CS.
Yeah, I'm tired of all this "old people can't do this stuff" line of thinking. If they had an interest, they would. My mother taught herself a bunch of stuff with the comp and took classes at the local community college in Unix, etc. at age 50+. Point is, if your mom had an interest, and she's not a retard, she would be able to handle VB.
Learning php in conjunction with html may be the way to go. The reason for this is that unlike most "hello world" programs which end up in the boring and seemingly non-relevant console, her first programs will be on the web: something she is familer and comfortable with and immediatly sees the value of. In other words, it may be best to try to keep things relevant and relating it to ideas she already knows well.
That would be a great way to bore the living crap out of her and make sure she never wants to program again. You've got to start with the fun stuff first to get her interested and for most people out there, theory before practice is anything but fun.
Download my free songs!
try the Beginner's All-Symbolic Instructional Code. It's pretty basic, of course, but useful in this context.
The higher the technology, the sharper that two-edged sword.
Bad choices: anything web related. PHP, HTML, CSS, Javascript all that is the WORST way you can start. The complications of badly-designed programming languages compounded with the whole saving and refreshing bit, various browser quirks, and things that look almost nothing like an IDE.
Functional, imperative, and probably even object oriented languages in general will be nearly impossible on a conceptual level. They're designed to be useful for someone who thinks that way, which normal people really don't!
The best idea I've seen here is QuickBasic (or QBasic will do in a pinch). Instantly complains when you make a mistake, so you can fix it. A 'command' window, which allows you to execute single statements, allows you to start with hello world without even the concept of 'running'. Automatically takes care of case, and downright intuitive in terms of runtime errors. Basic procedural language.
Basic is definately the place to start. Once Mommy's mastered qbasic, then you can start with some more interesting languages.
If you go with this one make sure you are there to set up her environment and then get out of her way. This book is one you "grok" before your higher brain gets in the way, and if you are there to toss computer jargon at her it will just confuse things.
[Set Cain on fire and steal his lute.]
hypercard ... ok
but bash scripting ??
that's about the last thing i'd recommend
the syntax is among the worst i've ever seen.
it's inconsistent, needs spaces in strange places
etc. if python is too complicated bash certainly isnt an option.
Seriously though, why do you assume she'd be interested in programming? I've been using computer almost all my life and I absolutely hate programming. Teach her how to use Access and let her develop a database to track something at home. Show her how to use instant messaging to hang out in chat rooms and pick up younger men, etc. Maybe she'd be interested in playing around with Photoshop with a digital camera or video editing with a camcorder. Don't pigeon-hole her into programming as the next evolutionary step she needs to make after learning e-mail! That's just crazy.
The number one reason I hate programming is that I don't have any reason to program anything. 99% of the time things I would want to write are already on freshmeat so why reinvent the wheel? Besides, I don't have the patience for coding outside a classroom environment where I have a very strict set of instructions on what the program should do and what mechanisms you need to use to implement it.
No, not with line numbers, and not with GOTOs. QBasic doesn't need them. If you teach it with some structure, and make sure that she declares her variables, she can have a total blast and get a feel for what programming is about. Fast and fun results will prevent loss of interest, which is probably the biggest threat to your project. Further, the knowledge that she gains will not be obsolete because the procedural statements are almost identical to VBScript. And the built-in help file is actually useful. Face it, you have to start with something fast and easy if you want to hold her interest.
How the hell is squeak too childish?
Of the things that you list there, squeak is probably the most powerful, advanced, well-designed learning system out there. And not only is it a learning system, it is used for SERIOUS purposes by people doing SERIOUS work. The fact that it is also a good learning environment speaks to the uniqueness and elegance of Smalltalk.
Even attempting to lump in squeak with Logo and Lego mindstorms shows that you really do not understand what you are dealing with.
_please_.. do not make general statements like these without actually knowing what you are talking about. And trust me, on this point, you do not know what you are talking about.
-Laxitive
I write software for a living, but I never know what direction to go in until I have a well-defined set of goals. Learning is kind of the same beast.
A good example might be a recipe program (to go on the typical "mom"). You could start out with some simple GUI stuff, putting windows on the screen, maybe a couple simple menus and clickies. The first recipies can be hardcoded, then back it with a simple database.
Sure as hell beats writing Hello World programs.
:wq
Macromedia Flash's Actionscript is pretty easy, from having glanced at it a bit, and can be used to do some cool stuff very early on. It also means having to buy the program after the free trial runs out, though, but that's my suggestion.
no.
Scheme is not a complicated language. In fact, that's its biggest advantage. It's dead freakin' simple, so much so that the entire language specification is only a few pages long.
Compared to it, Python is an abomination of complexity--and Python's not a complex language, either.
You're not going to find a simpler, more straightforward pair of languages than Scheme and Python. If you're not able to make either of those languages comprehensible to your mother, then I'd respectfully suggest one of these is true:
- She doesn't want to learn (isn't willing to make the investment in time, effort, etc.)
- She doesn't understand basic mathematics ("what's a function?", etc.)
- You don't understand the languages you're trying to teach
- You're not communicating effectively
Any of those would seem far more likely to me than "Python and Scheme are too hard".Pascal was designed to be a teaching language. It's approach is simple if the language doesn't say it legal to do, it's illegal. Being such a tightly defined language its error messages are very good.
That you think SICP is a book that's been victim of hype is excellent evidence that you've not read SICP, nor understand the lessons SICP tries to teach its readers.
What would your mother gain from learning to program? What use might she have for it?
Of what use is a baby?
What would you gain from learning to program? What use might you have for it?
What would I gain from learning to program? What use would I have for it?
That one I can answer: Sometimes programming buys my groceries, and even when my income comes from other sources, programming is an endless source of entertainment for me. Especially when I'm not depending on it to buy the groceries, programming is fun. Why should that person's mom be any different?
If you spend an hour playing Solitaire, at the end of that hour you have nothing. If you spend an hour writing a program that scrolls your name up the screen in a sine wave, at least you have a program that scrolls your name up the screen in a sine wave, and maybe you can use it as a primitive screen saver.
Since when is the world is divided arbitrarily into people who enjoy programming, and those who are only able to enjoy sitting on a couch watching other people tell them stories or play games? Anyone with more working brain cells than the average zucchini can learn programming and enjoy doing it. What might she gain from it? Maybe a new job. At least, something more useful than Solitaire scores. What use would she have for it? Maybe a way to get her computer to do thing she needs that it would otherwise not be doing. At least, programming would be a way to have more fun.
Coding is like sex: Some people do it for love, some people do it to make their friends happy, some people just do it for the money.
As a college programming instructor, I totally disagree with this. I'd love to test your hypothesis by:
(1) Posting your "immediate" Java code creating a window, button, etc.
(2) Showing it to this guy's mother, and
(3) Being there when she freaks out over it.
We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
Basic has very little structure can tends to develop bad habits.
Goto anybody???
Any language you choose is easy once you 'get it'. No language is intuitive or easy. Basic concepts are relatively simple in all languages (if/then, looping, comparisons, basic math) but the use of those methods to DO stuff is what's hard.
She's eventually going to need to bite the bullet and figure out how it all goes together. No pain, no gain and programming is all about pain.
Suggestion - have her conceive of something she'd like to automate. Does she use spreadsheets? Great! There have to be any number of things she does over and over and over that would be prime candidates for coding. Guess what? Most sheets include programming languages. Now she has a goal (automate a task) and a tool (scripting language). She's 1/2 way there.
Once she's gotten her feet wet, it's just a matter of building more and more complex systems and figuring out the techniques of programming.
My personal choice for the best tool to quickly and easily build apps that really do cool stuff - Lotus Notes. Full built in development environment, choice of two built in languages plus hooks to whatever else you'd like, a limited number of widgets with a limited number of methods and properties - it's totally possible to get the entire environment into your head making it easy to focus on the objective rather than finding the right method. Downside - you gotta buy the designer client and it's about a grand.
Python is similar to Notes in that the language is small enough to grasp and is extensible.
If she gives you crap about 'it'll take me years to learn how to do this', just tell her the years are going to go by whether or not she tries this so go for it!
HTH and wish her well - old farts can learn new tricks too.
Dogu (an old fart who gets paid to write code)
Beginners All-purpose Symbolic Instruction Code was also designed to teach people how to program.
BASIC is really horrible. The only way to do anything useful is to use peek and poke and you wind up with a wrapper around some machine code. How the heck is that easy?
Python is great for beginners, you can do useful stuff without hacking machine code, and it doesn't teach you bad habits like BASIC.
But frankly I'd have to say Delphi would be the best place to start. All of the above advantages, plus plenty of RAD capabilities so she could stand a decent chance of making something she would find useful before she throws her hands up in disgust.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Friends don't let friends enable ecmascript.
Not programming? Maybe not OOP or High-level Language, but it is definitely programming at the most raw (well except for machine code!) level. I'll agree that it's not the best place for someone to jump into, especially if they're afraid of higher level languages. To code anything useful, you really need to know what's going on w/ the system, whereas with BASIC you can write a very nice program w/o caring how the system works at a low level.
All in all, I'd recomend QBASIC or something similar for the beginning programmer. Some might argue that BASICs lead to spaghetti code, but w/ careful instruction and guidance that tendance can be overcome and some very nice code can be produced.
I've discovered a remarkable proof, but this margin is too small to contain it...
I would actually do it the other way around, skip the whole theory completly for the beginning and only come back to it at a much later point if there is still interest in programming. Sure theory is important if one wants to be a real programmer, but just for having a little fun with a programming language its not needed at all and theory isn't really thu fun part of it anyway for most people. Stuff like sorting, linked lists and such all come build-in with todays programming language, so not knowing about how they are implemented doesn't even hurt at all, since one can write a lot of usefull programms even without knowing the details.
... return x + y ...
Speaking about programming language I would start with Python, which I find a quite a bit easier to understand then Scheme from a beginners point of view (no need to declare variables, familiar infix syntax) and it also has an interactive interpreter like Scheme:
>>> a = 5
>>> b = 10
>>> a + b
15
>>> def add(x, y):
>>> add(a, b)
15
Above code should be easy enough to understand and should already be enough to have some fun.
The only things I miss in Python, which for example QBasic provided, is the IDE (not sure if there if there are any easy ones for Python) and more important a easy way to get access to the screen, in QBasic it was just:
SCREEN 9
LINE (10,10)-(100,100)
and you had a line on the screen, with Python I don't think there is anything that simple, most GUI packages always require a whole lot of initialisation, which is really not beginner friendly.
What does Mom do when she is not on the computer? What interests does she have? Who does she e-mail?
Rather than just looking at programming, maybe she is more generally looking for other things to do with her computer. Maybe her interest in programming is more of an interest in you and what you enjoy doing.
Does she craft? Does she garden? Does she cook? Would she like to play bridge with other people rather than just playing solitaire? Would she be interested in putting together a family history? Does she know how to engage safely with other folks with her interests on the internet? Can she google?
Is she an organization nut who would love to put things in databases? Does she have a collection she would like to itemize? Such lists and collections can be easier maintained on a computer. How about an inventory for insurance purposes? Would she want to use some sort of financial management program?
Would she be interested in obtaining recipes, craft ideas, or patterns?
Would she like to read, discuss, or publish poetry?
As for learning how to program, if her current activities do not point you in another obvious direction, HTML is an excellent place to start.
For all those screeching that HTML is not a programming language, what is there to reply but "duh, my aren't we all impressed that you recognize that HTML is markup language, bully for you."
Now let's help Mom.
HTML will get Mom used to typing in a text editor to produce a file which will get transformed into something else.
Mom will get instant gratification seeing her results in a web browser.
Mom will, within a few minutes, have something she can actually use and share with others.
Mom will make mistakes, see those mistakes, and be able to fix those mistakes.
Mom will get used to working with blocks.
Mom hopefully will see the advantages of writing in a manner which is easy to read.
A terrified adult does not need a tutorial on structured programming.
She needs to become not terrified.
Riannin
Everyone who said HTML is not a programming language is worried that they are not actually competent programmers. You're missing the big picture.
This is where so many of us fail our customers (and I do mean customers -- we work in a customer service industry, get used to it). We feel like we have to hide the following facts:
Being able to code well is not a viture, it's a talent. You're not holy because you can make more efficient use of the EAX register than your neighbor. And being able to code simple things is not out of the realm of ANYONE. It may be VERY simple things, but people can learn to fend for themselves in simple matters. Macros, mail filters, PowerPoint animation -- these things are ALL programming! Maybe not as holy as you all would like, but they are programming. Many developers feel like they are the priests of the code, and they have to prevent the laity from THINKING that they have anything figured out, because if the laity could figure any one thing out for themselves, then they might figure out OTHER things, and soon, what would they need priests for? Relax, you devout catholic programmers (I mean catholic as in definition #1 -- not religiously) programmers. Just because the laity can learn a little HTML, doesn't mean that your days of molesting your clients are over. You don't have to slam the door on HTML being a language as if it was heresy, and will undermine the church. Lighten UP!!!
My administrative assistant writes simple queries (forgotten username/passwords) because I took the time to show her how to do it. She also now maintains the web pages that deal with technical support for our product. Now, it's true, her account only has select permissions because I'm not ready to give her the keys to the DB. I also don't require her to check her web pages into CVS (although I should, it's so simple). It probably took 15 minutes to teach her how to read the schema, and how to structure a basic select. And she had had NO previous SQL experience. I've also heard MANY people say that SQL is not a programming language. This is just ridiculous.
Some developers poo poo (that's right, I said poo poo) HTML because it is easier to do, and people who THEY don't consider super smart are able to produce web pages. Because someone without formal training in "the art" can make something that makes a computer "do" something, insecure developers must berate that accomplishment.
This is arrogance of the highest order. Get over yourselves. None of us is Einstein. And programming is not the intellectual equivalent of a pissing contest. There is nothing sacred about what we do. Some people tend to talk about programming as if it's some mysterious art (not criticizing the Donald, whose books I revere). It's not. Some developers like to distguish themselves from "scripters." Some developers look down on DBA's as people who only maintain/tend the data.
You're all missing the fact that EVERYTHING that computers do is ONLY about the display and manipulation of data/information. All SGML derivatives are rules that the computer interprets, and then executes instructions based on those rules. And execution of rules is (IMHO)the beginning of programming
The reality is that we should be happy to have people understand how things rea
Nothing great was ever achieved without enthusiasm
And I've heard "I've always wanted to learn how to..." regarding both, plenty of times. And my standard response to that is "But why? ".
Seriously - the question is equally relevant for both disciplines (and disciplines they are indeed - the number of people that can do either well without investing a lot of effort is severely limited). And quite often, I've discovered that what the person really means is "I think it would be cool/chic/whatever to be able to claim that I could....". And that's something totally different, indeed. If the person doesn't have a grasp of that distinction, it's time to turn away while shaking my head. If they really wanted to learn how, they'd have found a way to scrape up enough money to buy a dirt-cheap guitar and learned how to do it. If Robert Johnson could get a guitar, so can you...
And sometimes, the person has a fairly realistic goal in mind - one that doesn't involve a whole lot of mental and emotional investment. It doesn't take a lot of effort for somebody to learn enough guitar to not look foolish sitting around a campfire - you learn a I-IV-V progression and the associated relative minor chords in a few keys and how to strum on the beat, and you're set. Similarly, learning enough programming to write small scripts to make your life easier isn't very hard - there's enough "<Scripting Language> for Dummies" books.
However, that's a different goal from understanding either subject in depth - and neither "knowing enough to fiddle around with it" nor "truly understanding it" are the answer to the unstated question here...
I'm going to go out on a limb and speculate that simoniker's mother isn't really interested in learning to program - what she's really wondering about is "How can simoniker sit there all day typing away, when Solitaire gets boring after a few hours?". And the right answer there is "Artistic Drive".
Unfortunately, that's a very hard concept to explain to those not driven by it. It takes many forms - the artist starving because they'd rather buy paint than food, Stevie Ray Vaughn playing guitar till the calluses on his fingers bled - and then crazy-gluing them back in place and playing more, or any athlete or performer who has made personal sacrifices in the pursuit of their goals....
And those of us afflicted by it are never, and have never, and probably never will be, understood by those of us who aren't.. ey to buy a cheap one and found a way to learn.....
I think the most important factor is the way to teach it and not the programming language. I myself am already a programmer and I just failed to read the Introduction of the HTDP. This thing look atrociously boring.
All my life I have teach all sort of things like sports, how to maintain computers and many other stuff to friends, family and for work.
Good teachers need to adapt to their student and find the particular way that work best for someone. Taking the contend of a book and trying to force it directly in the head of your mother is not the best solution.
Go for a project oriented method. Ask her questions and try to find WITH HER a not to difficult project that she would like to do. Then choose the programming language the most appropriated and divide the whole project in smaller goals. Teach her goal by goal until you can assemble the whole project with her.
Star with something easy and remember the most important word in all the process is MOTIVATION. People are willing to learn anything if they have the motivation to do it.
Yahh, hiii haaaaa! -Major Kong, from Dr. Strangelove
We don't really know what the author's mom is interested in specifically. Obviously she saw some potential in personal computing that she was missing out on, but that doesn't necessarily mean that programming is the only outlet for her creative potential, and certainly not the most appropriate one.
There are myriad possibilities depending on her interests: landscape/garden planning, digital painting, music composition, interactive learning, personal research, personal finance management, forum discussions, or even multi-player Yahoo! Games.
Some of these are creative outlets while others are means of personal enrichment or empowerment. Whichever category applies, the fact that she was keenly interested in exploring new possibilities in computing suggests that she has the potential to do something serious and exciting with her computer. I see no reason why that engagement has to involve high-level programming.
It would be better to see what she likes to do normally, and then see if you can use a computer to improve on that.
For the amount of time I spend on my computer, I've done very little programing. The little bit of scripting I do now is solely for my website.
Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
Teach her to create simple Macros in Word or Excel, or some other program that she uses daily. As a bonus she will be able to use her mad skillz at work too.
I started "programming" by creating simple macros for WordPefect 5.1.
Have her learn something that she will be able to use right away and her interest will be peaked.
...and her growing passion for computers.
DEFINETLY PERSUE THIS TASK!
commenting the above.
me thinks, that html seems to be a great choice as the parent points out:
- it is great as an introduction to getting the "machine" to do what "you" want
-> this feeling of control encourages to learn more
- it will make them familiar looking at conventional (as in content) text, mixed with text expressing abstract ideas
-> any one familiar wit LaTeX has to view html as just anoter way of wordprocessing; though what it comes down to and is of interest for the poster is, that learning and using html is a great introduction, especially for those having difficulty with anything 'academic', combining regular text, their content, with controling text. controling in the sense, as it has some form of control over the display of the content by the browser [regarding html].
then there is not only html. once you start to delve into the subject, you will unavoidably be confronted with such things as css, php, javascript, etc. php will again be daughnting, and far to advanced. javascript though, can be hacked by any script kidy.
now we are not only looking at formating text. even if his mother chose css as her next step. she will start to discover how to gain even more power over the machine, as now first actual manipulations are possible. this ability also delivers a sense of capability, encouraging to tackle more difficult issues/tasks. as well as that it trains the brain in abstraction, the basic principals of coding (creating folders, organising files, all very basic stuff, but the UNDERSTANDING delivers far more insight into the actual functioning of a computer), and give a first impression of the linguistic capabilities a machine has.
teaching your parents can be a daunting task, that one want to organise in a way, to make the whole adventure as pleasent, easy, and least time consuming as possible.
with html you can let you mum play around. introduce her to a simple editor where she can easily switch from editor to browser view, and explain this concept to her (first look into the difference of code and application, both are text, but both text have different meanings; to US this concept is as obvious as that the sky is blue, just as proving the existence of a probability is trivial to a mathematician, anyone new to programing is confused, that there is text[code] and that there is text[actuall text displayed through code], as one can note in the way i have written this down, 2 them it is all just TEXT). then give her a simple, but not so trivial, example that she can play around with. give her a bunch of links where to find more information. and then let nature do its thing.
i have tought english to chinese kids, who didn't speak a word of it, while i don't know a word of chinese (exagerating, by then i had learnt how to say 'hello' = 'ni`hao'), i have troubleshoot the troubles of my grandfather and given him basic instructions an application usage via the phone to england, i have helped out most friends and any other family member, besides my job as a software and web deveopment consultant. my experience is: give them the fundementals, and then just be there while they play around. remember all those animal movies, how every animal learns while playing. hhhmmm, (not) sorry if i offend any believers, but we are animals. ergo, we learn through playing. while watching them, guide them. by that i mean, show them how they can gain more. in any game one can not only get stuck, but also go down paths, that lead no where. that is where your job as a teacher comes in: you are their guide. you mountain guide tells you about the pit falls, points out dangers and oportunities, great views, as well as the best way to the desired destination. guide your student (mother) into the computer park .
good luck, and hopefully also fun;)
My Highschool teacher started us out with 2 semesters of Pascal, 1 of C++ only using linear methods. Finally we switched to Object Oriented with C++ and an Independent study of VB. College started with Scheme, then Java for the comp sci intro classes. Now all of our algorithms classes and such are taught in C-C++. Pascal/fortran were the industry standard for intro classes. I believe only 2 universities teach Lisp/scheme and have them centered on the intro curriculum. If you really want to get the just of programming Linear languages teach an excellent use of syntax, methods of style, and a clear approach to problem-solving in a way a computer understands what is being used. Object oriented is (To me) so abstract that it is difficult to understand exactly what is going on when I first looked at it. If you really want to program there are two things that drive a successful programmer. 1: a goal as to what you're going to do with your programming knowledge. 2: Acceptable steps to get there without taking on something that's too advanced. Pascal worked well enough for me because it's a great language to start out with easy to build number-crunching problems. As the end of our Pascal days was introduced we started learning graphic implementations for use on artillery-games or simple animations. Here's where we noticed what a pain a linear approach is to build these as our code lengths approached a thousand lines of code. imho, I would take a good look at what she likes to do on a computer, and then attempt to clone it. Solitaire is a good program to start off with. You really only need to know read/writes and randoms. Graphics aren't necessary in any language as you can do ascii printouts of location and update functions to show the board. As she becomes more confident with her skills continue to recreate the Same game making it more and more user-friendly. This step allows her to change languages, approaches, and designs so that she can begin to understand the numerous variety of ways programming can solve the same problem. Sorry if this is reduntant to other posts, but it won't work unless you can create interest in something you're going to spend hours upon hours doing.
-Alex
It's a quick and easy fix for someone who wants to "make their computer do something".
Only in the sense that word processing is.
It also tends to push the person to learn Javascript...
Trying to learn Javascript as your first programming language would turn off a lot of people. We only think it makes sense because we're geeks, and generally OOP geeks at that. For someone who isn't quite sure what a variable is, let alone what an object is, Javascript would be a nightmare.
I'd suggest Perl. Yes, really complicated Perl code can get so hairy that fur grows on your screen, but in the main it's a clear, straightforward language. It's also a very forgiving language. It will try its hardest to do what it thinks you want, unlike, say, C++, which seems to delight in shrieking "You didn't say 'mother, may I'!!!"
Despite those people who claim it turns people away from from programming in the One True Way, BASIC also has some notable advantages. One of those is the availability, via the used book dealers, of this book and its sequels.
Come to think of it, I could have a lot of fun replicating some of those games in Perl.
Assembly language most definitely is programming at its most flexible, but it's more like a scalpel than the chainsaw you've been wielding. While you can cut down more trees faster with a chainsaw, it's not something you'd want to use for gall bladder surgery... yet both are cutting instruments suited to particular tasks.
I agree that assembly probably isn't something that poster prime wants to teach his mommy, but saying that it isn't programming is troll food in these parts. You clearly don't have a fucking clue.
Trying to teach someone a skill they don't see the need for will only result in frustration. I didn't learn my favorite language (Python) until I needed it to script vtk.
The key aspect of teaching programming is to identify a need your mother has for an automated task. Then teach her how to automate it with a simple language such as Python using just the subset needed to solve the problem. Then branch out aadding features to the solution and identifying new needs. As the programs expand, introduce new language features.
But most important: it's fun!
One line blog. I hear that they're called Twitters now.