A Gentle Introduction to Programming Using Python
ocw.mit.edu
ocw.mit.edu
It's really unfortunate that 95% of the courses that have been put up don't have nearly enough content posted online to be of any use. Just take a look at the lecture notes and labs posted for this course. You're far better off just looking up some random python tutorial online.
You can often find videos of entire course lectures posted online by using google video. Or if you're looking for an academic conference style crash course, check out http://videolectures.net/
The second half of this is hard to solve (feedback), but the first half (textbooks) is solvable.
Check it out here: http://www.greenteapress.com/thinkpython/thinkpython.html
You get the videos or mp3 , transcript of the talk, pdf of the blackboard. The tests and the answers to the test. This is just excellent.
Edit: http://oyc.yale.edu/classics/introduction-to-ancient-greek-h...
wow!
I've also found http://code.google.com/edu/curriculumsearch/ to be a good resource for self learning materials.
http://www.openbookproject.net/thinkcs/python/english2e/inde...
The dead-tree edition is slated for March (which I'm definitely picking up) and the manuscript is free on the site.
SQL makes little sense as a first language, so don't extrapolate from that experience.
Then learn Python/Ruby/Lisp/whatever.
For the OP, I would suggest picking up python or ruby. And focus on doing something fun. If you like graphics, pick up Processing. Find interesting code on the net and tweak it.
I don't think it's a good way to start programming but I would encourage people to learn it at some point because of the reason you gave.
I'd also suggest that the best way to get to grips with C is to learn assembly with a simple processor at the same time. People always seem to get stuck on pointers etc and that's easy to understand when you know a processor's addressing modes. Plus, it's always fun to use gcc to output (unoptimized) assembly code and compare it to what you would have written.
But definitely, C can be very frustrating. It takes weeks or months before you can do anything actually useful (not just nerdy fun, like calculating pi or something.) That being said, how do you explain the difference between an array and a linked list to someone who only knows python? to take a trivial example. Sure, you could, but it's extremely unintuitive. Whereas with C you're so close to the hardware that the distinction is obvious.
Eric Raymond's advice might be helpful (you've picked the right language to start with!) http://www.catb.org/~esr/faqs/hacker-howto.html#skills1
I wouldn't worry about SQL right now. If you feel overwhelmed, drop it and pick it up again after a week or two. Repeat until unnecessary.
Django is probably a better choice for jumping right into CRUD apps and numbing the pain of SQL, though. There's more to deal with up front, but you have a more complete system after the first hour than you do with web.py.