At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.
Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus.
Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
I think it's a pretty good way. the problem sets are the key. practice.
the major drawback about OCW is you're not getting specific feedback. What I mean by that is you need to practice correctly. For example, if you're practicing taking free throws in basketball, if your form is bad all you're doing is ingraining a bad habit.
In the same way, in OCW you're not getting a lot of feedback. Your program might work but it might not be the best way of writing the program. What you really want is feedback that corrects errors. The lack of feedback in OCW is the biggest drawback in my view.
What I've been doing is once I complete a program, I post it to get feedback. I want to know if there was a better way to implement the program. That's a bit hit or miss because OpenStudy doesn't have TAs, it just a bunch of novices trying to help each other.
I agree with valmont that the best way to learn is to practice, and that you must take care not to get bad programming habits. So you gotta get some feedback and I think this is a great place for that.
I disagree when valmont says that there's just a bunch of novices here. I'll give you my own experience, not to boast about myself, but to illustrate:
I'm a seasoned java developer (more than 10 years of enterprise development), and I've got a master's degree (Advanced Information System). I folow the course to refresh my knowledge about computer science, to see what a MIT course look like, and to learn Python. I'm not a Python professional but I know what a good program looks like (and a bad too). I guess I'm not the only one here in this case.
I've spent a lot of time in university and I can tell you that professors and TA's are often quite average developers, though they may rock when it comes to theory.
That was my little pamphlet, thanks :)
So, I guess I'll try to post my program and get feedback.