OpenCourseWare is such a cool idea and has a ton of potential.
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 value of most courses isn't in the lecture notes or assignments. Instead, it's in the textbook and feedback received from assignments. Neither of these can be published online on open courseware, in most cases.
The textbook for this course is actually online, so in this instance the problem's solved. They're using the free book "How to Think Like a Computer Scientist," by Allen B. Downey.
Help me, HN: I really want to pick up elementary programming, and I've been convinced that Python is the right way to go. But when I tried to learn SQL, I just got completely flummoxed. Is this even worth the try or is the whole "some people just can't get programming" true enough that I can do better things with my time?
I think python (& django) is a great way to go. I'm relatively new to programming as well, and find that I'm able to get what I want to done. Try the book used in the course that's the focus of this thread, which you can get for free here: http://www.greenteapress.com/thinkpython/thinkpython.html
A quick look at your submissions/comments/profile reveals that you're clearly not in the 'just won't get it' category. Some get things faster than others, but the key is to keep at it; soon things will start making more sense.
I'm going to get beaten for even suggesting this, but I would say start with C. It's hard, it's time consuming, it takes a ton of (error prone) code to do anything useful. But after a few months you will have a solid grasp of how a computer operates on the hardware level. It's hard to overstate how important this is.
I first started programming with C and had a terrible time. I didn't really get anywhere and went through a cycle of repeatedly giving up and them returning to it after having a break.
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.
I'm probably biased here, but I honestly can't imagine coming to grips with the way python handles variables without thinking of them as pointers and references (i.e. mutable vs. immutable, deep copy vs. shallow copy etc.) It would just seem to be a bunch of random special cases unless you know the machinery underneath.
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.
While I agree that C is a great way to learn how the computer really operates, it isn't the first language that jumps to mind when I think "elementary programming."
I wonder how many C programmers started with it as their first language.
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.
web.py is a lot of fun, isn't it? My favorite part is that you can fit the whole app in one file, if you want to (since templates, database models, etc. are all optional). It's the Python web framework that gets closest to the PHP experience of instant results.
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.
Word, I love web.py's flexibility as you have stated you can fit the entire app into one file. Or you can break it down to many pieces. I tend to favor the latter as it allows me to structure the app the way I want.
Oh they used How To Think Like a Computer Science. Excellent book for learning the Python. I especially love the chapter about fruitful functions. Plenty of useful tidbits to pick up from this book.
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/