"You're wrong, I'm right" doesn't make for a very good argument, especially if you're going to call me arrogant... Not to mention that you're putting words in my mouth...
Quote:-How many "good self-taught programmers" know what asymptotic notation is?
-In the same vein, how many know how to mathematically calculate the asymptotic bounds of an algorithm?
-How many understand what a lexer and a compiler actually do? How many can read Backus-Naur and know what it means?
None of these are out of reach for someone with a reasonable level of high school math and internet access. It's actually all very well explained in Wikipedia and thousands of other pages...
I think your problem is that before you got into CS, you didn't have the methodology to research and obtain the knowledge that you obtained in your courses. Obviously, when you program on your own, nobody's there to give you a shopping list of all the things you ought to know. And in all fairness, what you learn in CS is the snowflake on the tip of the iceberg.
I understand that I may have offended you by saying that the program you're in is basically a waste of money -- I'm bitter about my experience, there's no hiding it. But I did say in my first post that "if you feel you need it, go ahead." It's just important to put due consideration into it. For me, it was a mistake, and I'd like others not to make the same one if it's relevant to them.
Seeing how the job market works, how insignificant a CS degree is next to your actual on-the-side experience, it would be foolish not to acknowledge the fact that skipping the CS degree and just having any degree in a subject you also find interesting instead can be a wise decision.
It's "book smart" vs "street smart" -- both can be a viable option depending on the context. A compiler writer is better off taking CS. A passionate games programmer with good learning abilities could do away with it completely.