The MacBook (either will do. I would go with the Pro because those Retina screens are dope and it is only a bit more money) and wait until later for the PC. Chances are you won't have a ton of time to play games anyway (according to Steam I played about 10 hours of games between January and April this year, which was third year for me in CS. I used to average twice that in a week), but the ability to work on assignments on the go (while at school during breaks and things like that, not to mention taking notes in class) far outweighs any benefit the power of the desktop would have (power which you won't really need for the extreme majority of undergrad CS courses. Any time you will need a serious amount of power, you will likely be expected to use school hardware anyway).
And definitely get the Mac. Despite what others will try and tell you, there isn't really anything on the market that comes close to them right now, hardware-wise (specs are irrelevant for CS. Any modern, moderately fast processor will be just fine. Something like a gaming laptop would be complete overkill, and you would massively sacrifice usability for power, which you don't want to do). They have the best keyboard, trackpad, and battery life on the market, if you need you can triple boot them (OS X, Linux, Windows. You have to do some EFI magic for Linux but it isn't hard. This probably won't be required as a VM will cover most cases you would need in undergrad. Also, Linux on Mac hardware is godlike. Since there are only a comparatively small number different hardware configurations, drivers are really easy to deal with, the Linux dev people, at least on Fedora, have it set up so that all the keyboard shortcuts stay like OS X, and the media keys work the same as in OS X), all the major programming related packages you would use on Linux are available on one of the three major Mac package management systems (I'm a HomeBrew guy myself. MacPorts is fine too. I've never messed with Fink before but it is apparently kinda cryptic to use. HomeBrew covers all my needs), which you will need to learn at some point (probably for GCC at minimum since most CS schools I've seen want your C/C++ code compiled with GCC and not clang. I prefer clang myself but alas), and so on.
Also, like others have said, a laptop paired with a mouse, keyboard, and monitor is a great setup that easily replaces a desktop while still allowing the portability of a laptop. That is what I use during school too. A lot of programming shops are moving to using this type of system too since it makes working with others easy since you aren't tied down and allows you to take your laptop home if you want to work from there for a day or something.
Another thing, a warning of sorts. This only happens to some people but it definitely happened to me and a few people I know. Programming may partly kill your desire to play games. I very seldom play anything anymore because, since I spend so much time looking at computer screens doing my work, I try and do non-computer stuff when I have free time to save my eyes from getting worse. Programming, at least for me, also happens to scratch the same itch playing games does. I find them equally fun in most cases (except Assembly. I would rather get punched in the face than write Assembly) but I prefer programming because I feel like I am accomplishing more with my time.
Oh, and there's another thing. Whatever setup you end up with, make sure to install Flux or something similar (on Linux there is Redshift, though there is a Flux beta too that I use). Since you will be looking at computer screens a lot and probably working at night a lot, reducing eye strain is quite important.
One last thing. Get a Dropbox (or something like that) account and save all assignments to it. Not only does this save you from system failure causing you to lose work, but it allows you to work basically anywhere since all you need is the internet to fetch your stuff.
Okay, actual last thing, that dude that is slamming Vi/Vim above is nuts, Vi/Vim is godlike once you learn it.
Log in to comment