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.
hi, I majored in CS
so I can answer some of your question personally.
as far as OCW goes, you can search through the progression of OCW cs courses that MIT students go through
the most popular starting courses are MIT Intro CS 6.00 - very accessible, and SCIP, which has a cult following amongst a lot of CS enthusiasts (but is functional programming and *sometimes* not considered as accessible)
your milage may very
I did the CS program at Stanford. and I can tell you our curriculum consisted of: Intro to CS, using very abstract programming languages programming robots at first, an then moving on to an introduction to C
object oriented programming techniques (the course that weeds out people not into CS *enough*) - very challenging course
some electrical engineering
and a lot of math - algorithms, discrete math, stats, logic being the most pertinent to everyday programming
now in retrospect - I think a lot of the programming can be self-learned if you have a lot of self motivation. by far the most important skills to pick up through formal instruction are general problem solving, logic, and other discrete maths. being able to decompose problems into more easily understandable components, and prove to yourself that they will work when you put them all together
MIT Intro CS actually forces you through this
even though you may not know it (kind of like karate kid when miyagi taught daniel to block via painting his fence)
So if you want to get to know computer science - MIT Intro CS 6.00 is an excellent place to start. Here's another one - more math oriented: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2005/
The single best attribute you can have as a computer science student is curiosity and swallowing your pride - above even natural ability
curiosity as in you will do a deep dive into any topic until you understand
swallowing your pride as in you will seek out the best resource available for a topic you don't understand, unabashedly - be it google, OpenStudy, stackoverflow - because you will earn best by looking for explanations that click, and learn faster than anyone that won't take that initiative
The hardest part by far is getting started. Programming is tough for almost everyone at first. A lot of my classmates preaches me on "code maturity" - a state you will eventually hit where you realize you can learn anything and code anything
It takes time - it took me through junior year college - but the important thing is to struggle through until you hit it. You'll know when you do.
Hope this helps! Dive in!
Also, have a look at http://www.eecs.mit.edu/ug/newcurriculum/SBCS_6-3.html : it's MIT's curriculum requirements for their CS program.
Wow, Chris--Thanks for all that! And thanks Shadowfiend for the pointer to their curriculum.