Thing is that there is nothing inherently bad with "theoritical stuff". The reason it works in practice is because it is sound in theory in the first place.
I completely agree with you. I feel like with my tirades on theoretical stuff, I've given a wrong impression that I think they are totally useless. They are not. On the contracty. They are VERY important.
It's just that colleges tend to stop at theory without showing you how it applies or how we are supposed to apply it in physical reality.
Another excellent point. I just feel like once we have been exposed to this stuff, we are left on a ledge somewhere to our own devices. Without knowing why or where they could be applicable. Some stuff I'm learning in Automata Theory seems quite interesting. It's just a very frustrating learning experience because I have no idea when, where or why I would use it. And that just makes you dislike the subject. This has been my experience in all such classes. It's not a one off deal.
I realize this stuff is important since it forms the basis of CS. But at the same time, I also see that most people pursuing a CS degree are in it cause of the practical stuff. They want to learn stuff they will use in the real world. It's like the 80/20 rule. Focus on practical classes like software design, testing, good coding practices etc... that 80% will find useful and leave the heavy scientific stuff to the 20% who do want to work on the mathematical/research stuff.