My advice would be to talk to a career counselor. They aren't going to care so much what you take, as long as it's something their college teaches, so they're likely to give you less-biased advice. I'm coming at it from the standpoint of pretty much being locked into programming as my career, so my view of outsourcing is surely biased against it. I have to believe my job will never disappear, so the following is my "reasoning" (rationalizing?) on it. Time will tell.
Personally, I don't think outsourcing is going to last just because the cost savings aren't real. You spend half or less on the development effort in terms of $/hr for a developer, but you lose it in the mangerial layer necessary to keep it on track. I've seen teams working on two different floors of the same buildnig that couldn't keep their design straight between them. Long term, there's no way you can expect a team in another country speaking a different language with a different culture to create the stuff you need.
But that wasn't your question.
I've been a professional programmer for 13 years, I've never wanted for work. On the other hand, my company is experiencing "rate pressure" from our clients, saying, 'Why should we pay $100/hr for your people when we can pay $30/hr for Indian developers with the same or better education?'" My company sells itself on its experience, we know the IT challenges in insurance/financial/pharmaceutical and we sell that more than our ability to code in ASP.NET. It works for us, but we still have had to lower our rates to remain in the game. I've seen offshore ventures fail miserably, though, as described above, so I think experience will win out in the end.
Outsourcing scares me. No doubt about it. But I wouldn't want to get up Monday morning and plan on doing anything else. I think the best protection you have against it is to become experienced with some business sector and become familiar with solving their problems. When you sit down at a meeting with a client and can intelligently discuss their business, outside of the technology, when you can help them actually frame their problems in a way that can be discussed and addressed with technology, that's when I think you have a leg up on outsourcing. It seems that about 30% of any project is the actual coding, and only maybe 70% of that could potentially be outsourced. So there's a major chunk of the project definition (requirements gathering, validation, looking for holes, etc) that has to occur in-house before coding even begins, then a fair amount of coding that has to occur in-house since that's where the tweaking has to happen.
Cross your fingers...