I can't say enough great things about the lectures on cs50.tv & cs75.tv. The prof (David Malan) is engaging, all the materials are available (homework, TA sessions, notes, slides, videos... everything). cs50 is particularly great for those who don't have a CS background but are interested in understanding CS principles from the ground up (vs trying to learn JS by doing a few tutorials).
Thanks - I've just started watching cs50 and he is great.
I've been doing professional software development for 10 years but his explanations finally made some very basic things click like they haven't ever before.
Was there anything particular that jumped out? I skimmed over the first three weeks but nothing caught my eye and my ADD kicked in. Going to check out CS75 now.
I'm currently working through CMU's 15-213. I highly recommend lectures 5-9 for anyone who never learned how processors handle functions calls on the lowest level. Part of the effectiveness of the class is CMU's interface for displaying the classes which is the best online class experience I've ever encountered.
Putting Compilers with Programming languages and theoretical CS is probably not a good idea.
The issues in compiler construction and optimization are orthogonal to those observed in designing programming languages, type systems, theorem provers etc.
Systems will be a better idea, or its own category.
It even has distributed systems of the VU (in Amsterdam) on it! Man, this list is comprehensive :O
For those that dont know: Maarten van Steen worked directly with Andy Tanenbaum and IMO he was one of the best if not the best teachers at my uni.
There are many other universities on it as well that I normally don't see. It would be amazing to see if more people have recommendations from lesser known online courses.
This list is awesome, and I hate to criticize. But it would be really nice if there was just a little more metadata for each link to provide some extra context.
Being on GitHub, this is probably a problem that could resolve itself with some PRs.
This will prepare you to be a general purpose CS professional. Further specialization will likely require some additional high level topics used in your field.
Linear Algebra : Machine Learning, Computer Graphics, Computational Geometry, etc.
Number Theory : Cryptography.
'Calculus 1' : Useful to know for 'maturity', you will likely not use it unless you implement numerical algorithm libraries.
Probability / Statistics : Heavily in Machine Learning and related fields, in small doses everywhere else just because you need to be able to create useful observations and presentations.
I would add another branch:
Logic : If you work with programming languages or verification.
Well, understanding calculus and being able to compute indefinite integrals or solve differential equations analytically on paper are very different things.
I didn't downvote because I disagree with what you said (I do disagree), but because you didn't explain your stance at all, while surely knowing that there would be a lot of people who would disagree with you.