views:

840

answers:

20

A friend of mine is interested in learning how to program computers, but she knows nothing about programming. I suggested that Python might be a good language to start with, but after some googling, I couldn't find any tutorials that covered both programming and Python in an adequate way.

I don't want her to go through the tiresome "learn algorithms in pseudocode first" routine. Instead, I'd like a tutorial that will explain the basic ideas while working towards a real goal, e.g. a very simple console game.

Does anyone know of any such tutorials? Do you think that I'm mistaken in how I'm handling this? Is Python a bad choice? I know that something like C, C++ or Java won't work - too many details will be very counterproductive. On the other hand, I think that Lisp might be too mathematical and abstract. Python, on the other hand, will let her even do something like coding primitive graphical games in a short period of time.

+10  A: 

Python is a fantastic language to start with. One tutorial I've found useful is The Non-Programmer's Tutorial for Python by Josh Cogliati. I've also heard good things about Python Programming for the Absolute Beginner, which I just ordered myself to prepare a training course.

Rick Copeland
A: 

Tell her to buy the Head First C# book and not look back. It contains three labs in it amongst other examples, for which you cannot find complete solutions (they have a discussion forum to ask questions); the reader is provided with some code and requirements and then it is up to them to implement the rest. The final lab leads the reader into building their own space invaders.

Apologies this isn't quite a python answer, just putting it out there as another possibility.

Russ Cam
A: 

I'd recommend small-basic for someone with zero programming experience, it's very beginner friendly. BUT there's not many tutorials around for it, if you are will to help her with it then I think its a great starting point.

It doesn't require visual studio, it's just one simple download and you can instantly start programming in the simple IDE. One warning is that it's still in CTP stage if your'e worried about those things.

Lee Treveil
A: 

Frankly, I have my doubts concerning if new programmers should deal with memory management or not. I do think that they should get in touch with C in an early stage, maybe to avoid the "Perils of Java schools". Anyway, i think Python is fine.

I find the official python documentation quite helpful.

Tom
A: 

Only a partial answer but I think Python is an excellent choice - whenever anyone asks me about a good language for beginners, that's the one I recommend.

The only tutorial that springs to mind is http://docs.python.org/tutorial/, but I think it's mostly geared at people with some programming experience.

On a slight tangent: something you could do is just explain the basics, i.e. how programs are sequences of instructions that the computer follows in order, and once your friend sees how that works (maybe you could show her how to write Hello World), just let her tinker. Perhaps you could show her the documentation so she knows how to look things up, but that might be a little overwhelming for a beginner...

David Zaslavsky
hmm, someone seems a little vindictive...
David Zaslavsky
+6  A: 

The book Think Python (which used to be called How to Think Like a Computer Scientist) is a fantastic introduction. It explains what programming is and how it's done, and introduces all concepts through code which the reader can run themselves at the command line.

Eli Courtwright
+3  A: 

I began not too long ago with MIT's Introduction to Computer Science and Programming. It is really an introduction to python, but gives an idea of comp. sci. concepts along the way. There are a lot of great links and resources on the page, and some fun toy projects to try as you go. I read through most of the material in a long weekend, then spent about a week and a half doing most of the assignments, but I was working at it more or less full time.

Incidentally, I think you are correct in recommending python. Some (older) people really complain about beginning with a high level language, but it is a great way to start learning, especially in a day and age where people enter programming computers through the doorway of using computers (as oppose to entering through the doorway of, say electrical engineering).

David Berger
+1  A: 

Does no one do LOGO programming anymore? :)

A: 

Sorry, but without first a foundation in basic algorithmic methods, just about anything beyond HelloWorld will likely be exceptionally frustrating and off-putting.

cookre
Basic loops and string manipulation are not so difficult.
guns
A: 

Python is a good choice. I don't think lisp actually is "too mathematical and abstract" as you put it. One good alternate option to consider for a person starting this way is the paring of the book How To Design Programs with the (pedagogically oriented) Dr. Scheme environment. Both are designed with absolute newcomers in mind.

This is in many ways a nicer/cleaner system than python, but will also allow her to rapidly put together graphical contents etc. too. Particularly for someone with no experience (and hence no preconceived ideas about what to expect) and/or no particular need to "be mainstream", this can be a very effective first environment.

simon
+1  A: 

I read somewhere that Head First series is going to come out with a new book for introduction to programming (using python language). I think you should totally check it out when it becomes available. I am sure it will provide the perfect introduction to any beginner with no prior experience.

Amit
I've only ever read one of the Head First series but it was among the best dev. teaching books I'd ever read. Tons of cutesy fluff in it also but not at the sacrifice of real material. From my (albeit limited) exposure to these books, I highly recommend them.
Dinah
A: 

A good published book, which is available for free online: Dive Into Python

http://diveintopython.org/

lyrae
A: 

I may get down modded for this but I don't know why VB.NET wouldn't be a good choice. There really isn't enough information and background provided or her depth of knowledge. It's hard to believe she has a lot of depth but has no knowledge of even rudimentary programming. Even beginning books on computer science have psuedocode and actual beginning code.

I know how to program and wanted to learn Python, but when I looked I found a lot of resources that were "hard" and none that I would give to a beginner. I've read lots of folks say teach Python first, but I don't see how. Doesn't mean I'm right, just the way I read it.

My guess is she needs something every English like and with a LOT of beginner articles. BASIC is called basic for a reason. I'm sure you could argue for C#, but Visual BASIC seems to be well suited for beginners and no that doesn't mean that VB.NET is only for beginners. That's silly. You can do anything with it, which is the answer to the last half of the question the OP has.

Java would also be okay. Lots of beginner stuff out there.

johnny
+1  A: 

Some friends have a bright 8 year old who's just got into MIT's Scratch as a first excursion into programming. It seems to offer instant graphical feedback and the plug-together "code components" are a nice way of avoiding the initial "syntax error" annoyances which can scare novices off, but without dumbing things down to the point that there's no "programmer thinking" involved.

Update: Some months on, and just when we thought they might be finding Scratch a bit limiting and be keen to graduate onto something like Python, they go and discover BYOB which hugely expands the possibilities of Scratch (build your own component blocks, multithreading...). Looks like they'll take a while to outgrow that. I kind of wonder if I'm looking at an early adopter from a generation who will never do "lines of code" programming as I know it and who's preferred programming environment will be something more like AppInventor.

timday
A: 

College :p

check Beginner Developer Learning Center Microsoft (no it is free !)

Yassir
A: 

AutoHotkey Help File: http://www.autohotkey.com/docs

Naveen
A: 

Hello World Computer Programming for Kids and Other Beginners is a good book for learning python and programming in general.

None
A: 

Python is a great starter language I think.

I would suggest sending your friend this link: http://www.youtube.com/user/thenewboston#grid/user/EA1FEF17E1E5C0DA

It's 45 organized python tutorials in video format (youtube) for complete newbies to programming. Walks you through installing it, running it, programming with it, etc.

ewongle
A: 

I'd recommend Why's (poignant) Guide to Ruby, which it is a great piece of literature as much as a tutorial.

Spongeboy