in reply to Existential Crisis (Or: On Becoming a Better Monk)
Sometimes, just getting away from your preferred language for a while helps you see things in a new light. For example, about a year and a half ago, I was frustrated with Perl and worked with Python for quite a while. There were several things that I found easier to do with Python than what I was now doing with Perl. But, after dealing with lack of support at work for Python, I went back to Perl and started using more advanced Perl, such as references, objects, anonymous sub's, etc.
Actually, being an IS guy, I feel your pain regarding theoretical CS. I have struggled with it for quite a while as well. I would highly suggest "How to Design Programs" and "Structure and Interpretation of Computer Programs" as a good start for getting a better grip of the theoretical side of CS.