This pretty much mirrors my experience in college. From 98-00 I took Computer Science (and did well) but eventually switched to MIS. Why? Because I spent two years making terminal-based C++ apps and became so frustrated at not being able to make real-world programs that I just gave up. It was so frustrating to be watching the first web bubble develop and yet be in class learning and writing something that seemed so completely different.
I don't know if it was my fault or their fault for not being able to bridge the gap between theory/learning and practical skills. Probably some of both. If my courses had somehow seemed more relevant or at least had a few web-based projects where I could see the real-world application of what I was learning, my career path would probably be very different today.