This course from Coursera.
It assumes very little technical expertise. It uses Processing so it's both powerful in an interesting direction and designed specifically for beginners. It's cool and your friends can pursue it at their own pace [removes a dependency on your time and patience].
'Newbie' covers many experience levels - from afraid to turn the computer on to moving beyond Excel pivot table macros. People need different degrees of handholding.
Not necessarily my favorite, Coursera's Programming for Everybody  moves forward very very slowly. Great for some people, drying paint for others. It is taught in Python.
A course I think is great is Coursera's Introduction to Systematic Program Design  based on Felleisen's How to Design Programs introductory text. It is possible to register for the last session, from a year ago, and complete the work on your own. It is taught in Racket.
Another course that takes a learn-by-making approach is Coursera's Creative Programming for Digital Media & Mobile Apps . It is beginner friendly and really encourages "getting into it". It is taught in Processing, and in some ways I think Processing is the ideal language for an introductory course in Software Engineering - it is pared down like Racket's student languages, provides just a pinch of Java pain, facilitates the production of really interesting output, and the environment provides a fast edit-compile-run loop.
For a person who is more oriented toward scientific or mathematical problems, Coursera's R Programming  might by a good fit.
Among the various Python Courses, I would probably go with Udacity's Design of Computer Programs: Programming Principles  because it is taught by Peter Norvig.
All that said, a book may be better than an open-enrollment class for many people, and there's a lot more variation.
This class on Coursera is likely to engage a young person.
In my opinion it's better to use the work product of seasoned professionals than that of even the most well intentioned amateurs. There are 10x teachers. There are 100x curricula. Being smart isn't expertise.
I realize this is a very common set of answers, so here are a few more concrete things you could do.
- Go through http://railstutorial.org/
- Learn Git (this taught me all of the more important unix commands for my everyday work)
- If you aren't keen on Coursera, check out Udacity
- Get a VM running so you don't have to worry about the damage you might cause running sudo stuff. This is very big; if you are intimidated because you don't want to cause damage to your machine, build a sandbox first. (Assuming you can set up a VM. If not, check something like this out: http://www.linuxtoday.com/infrastructure/2011010701239RVLFSW )