If you're open to different operating systems, and a student, it sounds like you could tolerate a not-so-premium setup if it came to that. I'm guessing you're not really a gamer, and probably not doing extreme graphics or video work. In that case, a Thinkpad or MBP might be overkill. Alternatives:
1. Look for cheaper Linux laptops from Dell or HP. I get the feeling that the laptop as we know it is going to change significantly within the next couple of years, at the very least with solid-state hard drives, so why bother with a top-of-the-line machine right now? And, you'll probably be making a lot more money once you're out of school, so you'll be tempted to splurge then anyway.
2. Get one of these newfangled ultra-portables like the Asus eeePC or Everex Cloudbook. (I've been eying the Cloudbook myself.) If this programming thing becomes a habit for you then you might also develop the habit of collecting computers. In that case you could have a "serious" (but still semi-cheap) desktop computer at home, with a decent-sized display and hard drive, do most of your work on it, and also use it as a server of some sort in your home. The ultra-portable would be for, ya know, laptop stuff.
(Disclaimer: I'm laughably frugal, and my company also supplies me with a real laptop -- a Thinkpad R61 -- which I like.)