I'm not sure if you're talking about all degrees, or just CS... However, speaking specifically about CS, I believe that my lack of refinement comes not from lack of Computer Science courses, but from lack of Math.
There is not much that an undergrad CS education teaches that I have not learned on my own over the past few years. However, I find that when I'm delving into deeper magic, my lack of math comes into sharp perspective. Most recently, this came up while I was hacking together a recommendation engine.
Sure, I can read a few articles and throw something together that works. But, when it comes to fine tuning it... I'm lost.
By the way, I'm a 22 year old hacker who did not go to college (yet). And I'm taking a Linear Algebra class right now to alleviate some of this problem anyway... heh.
The second thing that will help you is studying data structures algorithms. What is the average case for a search over x items? How long does it take to insert into a linked list? This way you can begin to identify bottlenecks, and get an idea as to how to approach solving problems with performance.
--Or you can be really smart, and get a free academic ride as I did, or go to schools (state schools) that don't cost too much and are decent.
You can get a DECENT (maybe not the greatest) education for LESS money in this country, you just have to try hard.
Remember, often in undergrad, it is what you do that matters the most. Once you go for Masters/Ph. then the school where you go matters a lot more.
For some wierd reason, the people that I met that didn't go to college but went straight working (usually during 98-2000 boom), even thou are very smart, and did well are somewhat rough on the edges. It is hard to point it out, but they just don't seem well refined...