>why don't CS degrees teach you much technical skills? Seems more theory than anything else!
Because the theory lasts a heck of a lot longer than the technical skills. They're giving you the tools to learn anything rather than teach you something.
>How can I change this, and what tips, advice, etc would you give to someone like me?
>Is this normal? Can someone who has gotten a CS degree elaborate on this?
Build something, get an internship, or freelance. I know that a couple of people at my school would subcontract to other guys as they were trying to launch products. A couple of disclaimers on that. 1) Everyone at school thinks that ideas are worth $ and will try to steal it from you rather than work with you if you ask the wrong person. 2) If you have an idea rather than a problem you're not going to be making money off of it, but it still might be good experience if you did it as an open source program or something.
What I ended up doing was helping to build a webapp at work, and my senior design was a webapp. Senior design was much more rigid in terms of agile methodologies and spec writing. Additionally, a friend of mine had hired me to write some scripts for him to automate some of his business tasks. I earned enough money out of a couple of projects to mostly finance a Macbook. My friend worked with me and had me write a proposal for every project before I started so that was good practice as well.