Mama needs a new laptop
August 4, 2007 9:22 PM   Subscribe

Does my computer matter for studying CS?

My iBook just died and I'm in the market for a replacement laptop. I'd like to get a monitor/keyboard setup for when I'm at home, so I'm sort of leaning towards a PC right now since they tend to be cheaper.

Here's the one wrinkle in my research so far: I'm beginning an undergraduate computer science program in September. The department's teaching language is Java, at least for lower division courses. Should I be outfitting my new computer with anything particular? Does the OS make a huge difference? Are there any non-obvious accessories/modifications you'd recommend?
posted by kelseyq to Technology (25 answers total)
 
I have a CS degree. Any computer is fine, as long as it has a processor and memory.
posted by mpls2 at 9:29 PM on August 4, 2007


Best answer: I used a g4 Mac powerbook for undergraduate CS and was slightly disappointed with its performance compared to Intel based machines running Linux. If you're doing Java you'll probably use the Eclipse IDE and in my experience it works better on non-PowerPCs.
posted by aereoperro at 9:33 PM on August 4, 2007


Java is cross-platform, so OS shouldn't matter.
posted by rancidchickn at 9:33 PM on August 4, 2007


Best answer: Chances are if you took any classes that required a super specialized hardware you'd have access to it in a lab somewhere. You might poke around in the upper level class curriculum to see if there is anything that interests you that is specific to a Windows, Mac or insert your favorite flavor of linux/unix here. Mitigating factors of course is that things will change between now and when you take those classes. Also, don't forget that Virtual Machine technology can help you out if a specific class requires you to have access to say a Linux PC for some reason.

Good luck!
posted by mmascolino at 9:38 PM on August 4, 2007


Best answer: While only tangentially related to your question, I've found that OS X makes for a good development platform as I can very easily develop code that will run on both OS X and Linux with a minimum of (if any at all) code changes. Windows is also easy to cross-develop for due to Parallels / Fusion.

That said, as rancidchickn aptly pointed out, Java is cross-platform (as well as its premier IDE - Eclipse) and you're doing a CS programme - what you will be learning should be platform and language-agnostic.
posted by PuGZ at 9:39 PM on August 4, 2007


It shouldnt, but a couple of things to consider:

1. Is your school a big microsoft shop? If so you might be better off with windows, especially if you dont like going to the lab often.

2. What are you interested in?

3. You should be exploring you options with at least a dual boot machine. Think windows/linux.

But generally it shouldnt matter.
posted by damn dirty ape at 9:43 PM on August 4, 2007


An Intel-based MacBook will run Eclipse very nicely. MacBooks cost less than equivalent Lenovo/IBM ThinkPads, if build quality is a concern.
posted by Blazecock Pileon at 9:44 PM on August 4, 2007


I went through a semester of Computer Information Systems with no home PC, and just used the lab computers. I think my work suffered when I started to do things at home.
posted by Deep Dish at 9:44 PM on August 4, 2007


What operating system do the computers in your school's main programming labs run? If it's a *nix flavour, you might prefer the Mac for the integrated linux. If it's a MS/Windows based school, then a PC is probably a better choice. Optionally, a PC with dual boot would cover both eventualities.

There's a lot to be said, though, for working in the lab--other students will be there in case you need to work collaboratively. And when you submit code samples that need to run for the TAs, they'll have been written and tested on the system the TAs are likely using.
posted by jacquilynne at 9:53 PM on August 4, 2007


Best answer: I did all the programming for my undergraduate CS degree through a telnet window to the lab computers, using vi (not even vim), only a few years ago. That kind of programming environment would be unthinkable now, but I didn't know any better back then.

It's unlikely the department will require any specific OS or software, as there will be lab computers provided that your code must work on, regardless of how it works on your own computer. I'd recommend that you get a Mac, since they can run WIndows programs but Windows PCs cannot run Mac software.

Also, if your degree program is any good, they'll force you to start with the very basics: command line, makefiles, batch scripting. OSX has a excellent shell behind the shiny windows; the Windows command line is a joke.
posted by meowzilla at 10:09 PM on August 4, 2007 [1 favorite]


A mac is a great choice if you're looking to be able to run lots of different operating systems and applications, since you can run Mac OS X, Windows, and Linux on them, and use virtual machines so you don't have to reboot between OSes. Of course, you do need a Windows license if you want to run that (legally, and being legal is a Good Thing), so it's not exactly a cheap option, but nice if you think having lots of choices here is useful.

Most CS programs have good labs; check out your lab options at your school...
posted by zachlipton at 10:09 PM on August 4, 2007


My school specifies my IT requirements. Check with your admin staff maybe?
posted by b33j at 10:10 PM on August 4, 2007


Best answer: A MacBook (or MacBook Pro) can boot into anything you want, so you'll get the best of all worlds. If you end up in a course that requires the MS tools, you can boot Windows or use Parallels or VMware Fusion. Ditto for a *BSD or *nix environment.

I'm working through a distance grad-school program in CS @ UIUC and wind up using Parallels or VMware to host virtual networks on my MacBook Pro, but have the added benefit of using the OS X tools to actually code.

It's worth paying the extra money, especially if you're coming from a Mac.
posted by hrbrmstr at 10:16 PM on August 4, 2007


Best answer: I graduated just a couple years ago with a compsci degree. I would *highly* recommend some flavor of unix: OSX or gnu+linux*.

All things considered you cannot beat the zillions of tools for programming that unix hackers have put together. Under Windows they actually expect you to *pay* for tools a *nix user can just grab. And trust me, your geeky-ass classmates will be running gnu+linux*, and if you want their help, it's going to be easier if you're running a compliant OS. At some point, you won't be writing Java, but instead will be hacking assembler to prove you can; at that point, a Windows box becomes a liability.

I never purchased one, but many of my friends had Apple laptops that seemed to have no problems. And, the new MacBooks are x86 cores, which means you can run just about any desktop software you can imagine via either multi-booting or virtualization (although ymmv on the latter).


*I like to think that every time I say "gnu+linux" instead of just "linux", RMS gets a wing. Or folk-dances onto a fairy.
posted by Netzapper at 10:37 PM on August 4, 2007



I did all the programming for my undergraduate CS degree through a telnet window to the lab computers, using vi (not even vim), only a few years ago. That kind of programming environment would be unthinkable now, but I didn't know any better back then.


I found that for ~90% of my CS projects this was (and still is) a very viable option. Just make sure you're using ssh and not telnet. And opening an X11 session will allow you to use multiple terminals (assuming your school allows it).

But since you're talking about buying a new computer I'll nth the macbook/pro recommendation (and check apple store refurbs if you want a really good deal). I find the flexibility you get w/ an Intel mac priceless.
posted by timelord at 10:39 PM on August 4, 2007


I would get a MBP (Macbook..). You can swing really any kind of system, but Java is a write-once, test-everywhere, realize-they-f'ed-up-the-core-libraries (getting carried away, you get the point) language. You want to make sure that it works on whatever they're running before you submit it for a grade.

Just my 2c (CS Major).
posted by tmcw at 10:45 PM on August 4, 2007


Best answer: None of the profs I knew in my CS department used Windows; most used OSX, and the others had Windows machines but did all their actual work through remote connections to departmental Solaris boxes. The use of Java may make your choice of OS seem irrelevent, but you'll really be doing yourself a huge favor by using Linux. You'll get a much better understanding of what an operating system is and how it works, and you'll have a tangible connection back to the 1970s and the creation of Unix. Its a little dated, but read In the Beginning Was the Command Line for more in this vein (and then read this for a better understanding of what Unix is). Screwing around with Linux can admittedly be a big time-waster, but can also be phenomenally educational (I'd suggest using Gentoo Linux if you enjoy wasting time screwing with the machine, Ubuntu if you don't).

If you do decide to use Linux, get a machine with an nVidia graphics card- they're much easier to get working in practice. If you get a laptop, what wireless card it comes with can affect whether you'll be able to experiment with hacking into wireless networks (not all wireless cards can be put into "promiscuous mode"), but that's probably at least two years down the road :).
posted by gsteff at 12:56 AM on August 5, 2007


I think you'll be fine with whichever operating system. Eclipse is a fine Java development environment and Java is made to be cross-platform.

In my higher level classes I tended towards using the linux clusters/computer labs. But that was probably just as much for the other people around in the cluster as it was for anything else.
posted by that girl at 4:51 AM on August 5, 2007


I still think a Mac is a great choice these days for computer science, because you're going to run into a lot of different OSes professionally and it's really cool to try things out in Mac when your classes are taught in Windows -- you find out about some of the little frustrating differences early, where your professor can still help you out, as opposed to finding out about them later.

Since you have a BSD operating system with GCC on a mac (plus XCode!), and you can run windows in Parallels or Boot Camp, there's absolutely no reason an intel iBook wouldn't be perfect for you. Note that windows laptops might be cheaper on the surface, but pretty soon you find out that Vista just won't run on the 512 MB of RAM that came with your $500 laptop, and you have to upgrade. So you're up to $750. (Just try finding a laptop that comes with XP today, I dare you.) Now, since you've got an older laptop with an older chip, it's a battery hog -- and your lecture halls weren't designed for computers, there's like 2 outlets for 500 students, and Vista eats batteries like no tomorrow because it's so proc-intensive. So you need an extra battery. $150. That's $900. You've probably already got all the software you need, whereas you'd have to buy new Windoze office software and stuff. Why not just spend the $1k on a new Macbook and stop worrying about it?
posted by SpecialK at 5:34 AM on August 5, 2007


The only suggestion I would make is for accessories: Get a decent sized monitor if you can afford it. 19"+ monitors are reasonable these days, and you'll appreciate all the screen real estate plus not staring at a tiny screen.

Back in the day, I had a sub-portable Sony laptop with a 10.4" screen. After I unexpectedly took a couple of CS classes, the amount of time I spent staring at the little screen led to noticeable eye strain - to the point of visiting my eye doctor because I thought my vision was getting much worse.
posted by shinynewnick at 5:43 AM on August 5, 2007


Best answer: If you use Windows, make sure you install cygwin and learn to use the command line tools of unix. Ensure you know how to build -- and how to troubleshoot the building of -- standard unix software packages.

And make sure you know how to use svn.

If you intend to work in the web application development field, ensure you know how to ssh to a unix/linux box and find your way around it. Ensure you know how to use sql as a command line language without relying on a database "gui". These are essential productivity skills regardless of which platform or web stack you wish to develop with.

It boggles my mind how many graduates of some CS program or other do not know how to use version control, or who apply for web development work and know no sql or even just how to investigate the contents of a table in a database if they don't have the one db gui they know.
posted by lastobelus at 5:53 AM on August 5, 2007


Best answer: One of the really nice things about CS is that the equipment requirements are very low. Like mpsl2 said, any computer will work. You can get the software you need (unless it's a Microsoft development environment) on any operating system, and the hardware requirements for running it are fairly low. Furthermore, you could end up doing a fair amount of work logged in remotely to other machines, in which case your computer is pretty much irrelevant. That's the answer to your first question.

If cost is an issue, then I really can't recommend a Mac. $600-$800 will get you a perfectly good PC. No, it will not have an "older chip" - that will get you the same type of CPU that's in a MacBook (maybe a little slower, but even 1.5GHz vs 2.0GHz won't make a huge difference for CS work). No, it will not require $250 to upgrade the RAM - that will either come with 2GB or you can upgrade it yourself to 2GB for $100 at most. You won't need an extra battery unless you need to use your laptop in class and have two long (1.5hr+) lectures in a row in ancient unrenovated lecture halls - rooms built or refitted in the past ten years or so have plenty of outlets.

If you can swing it, I'd suggest running Linux primarily. A lot of industry work will be in Linux or other unixish OS (e.g., Google uses Linux extensively), and if you go to grad school, familiarity with Linux will be invaluable. Dell is selling laptops with Linux preloaded now, here. The base configuration of the Inspiron 1420N there is very capable, for less than $800. There would be no worries about whether your hardware will work with Linux.

What would make Linux an ideal option, in my opinion, is if your school has remotely-accessible Windows machines available. Mine does, and so I can use Linux primarily and log in to Windows using Remote Desktop the few times I need to run Word or Powerpoint or whatever. If that's not a good option for you, then the same laptop running Windows would be fine.

Overall, the only thing I'd worry about with regards to outfitting your computer is RAM. 1GB will be enough, and 2GB will be perfect. That will be important mainly if you run a large Java IDE like Eclipse. Beyond that, there aren't any important modifications or accessories related to studying CS. One consideration for buying a monitor is to get one that pivots into portrait orientation; lots of people prefer coding on a screen with more vertical screenspace like that. A 19 or 22 inch LCD will be great for coding.

And like I mentioned, if your school has the resources, you can do a lot of work logged into machines remotely. Find out what is available to you and figure out how to use it. If there is enough available, you could save a ton of money by getting the cheapest laptop you like and doing everything remotely. It really is a viable option in many cases, and it's hard to argue with saving that much money if you can make it work.
posted by whatnotever at 7:38 AM on August 5, 2007


Best answer: I did my first semester in CS without a laptop. It was a pain as far as IMing new friends and doing homework with my classmates. However, if anything, it probably gave me a better academic start, since I stayed more focused when coding in public. My school had plenty of computer labs, including a Mac / Linux lab in my dorm and a Windows / Mac lab in another, besides the hundreds of computers in the CS building.

My guess is that if you don't make the time to learn all the good stuff that people are recommending here, you'll still encounter it in your relevant classes or when you do research, and you'll pick it up then. I'm still using Windows out of habit on my personal laptop, but after working with Xubuntu this summer, I feel limited by my tiny Cygwin setup. Once I'm back on campus and have other computers around to Google for info on driver problems, I'll probably add Ubuntu.

This may be insultingly obvious, but I'll say it anyway: set up regular backups! Especially in college, you really need a daily backup, not weekly (unless you do all your homework once a week, I guess), and it'll be pretty heartbreaking if you have to send off your laptop for repair the day before you have a programming project due.
posted by scission at 8:10 AM on August 5, 2007


Best answer: Understanding the command-line concept will separate you from the herd these days, and it's incredibly powerful and liberating to have done so, so try to get experience here, via UNIX systems (Linux OSes, OS X) or on Windows the UNIX-like layer provided by the Cygwin project.

Don't use the native Windows command window as it's painfully bad. It doesn't have anything to recommend it -- it won't make life easier in any way (which you might expect because it's Windows' native command line option) while its features are too poor to truly teach you what you could learn from a UNIX-style command shell.

Try to do Java development with a simple editor and the command-line compiler and runtime from the Sun SDKs.

Learn to configure how the Java runtime works by playing with the command-line Java tools. All that IDEs like Eclipse will be doing is providing an abstraction over those tools anyway.

Then also experiment with IDEs like Eclipse. You'll learn the advantages and disadvantages of both approaches and you won't be confounded by either when you rock up to your first Java job.

There is a large part of the computing industry which uses a pure Microsoft tool chain, including their IDEs and source code control system, and you may want experience with that too. Especially C#, which is very similar to Java -- your Java skills will transform into a strong understanding of this language very quickly, so it's worth keeping an eye on.

So if you did feel the need to look at Microsoft tools, and you wanted this on your machine, look at Windows laptops or OS X plus virtualization software (more flexible but more expensive).
posted by galaksit at 10:16 AM on August 5, 2007


~4 years ago, a friend went back to get a second bachelors degree in CS at the University of Washington, right in Microsoft's back yard, in buildings funded by Gates and Allen. He bought himself a nice new Dell laptop before classes started. Within a month he'd picked up a Powerbook, which he used for the rest of his time in the program. He said pretty much everyone in his program used either OS X, or Linux.
posted by Good Brain at 12:58 PM on August 5, 2007


« Older Exporting my car from the US to Canada. Register...   |   Hpw t create a text file of a folders contents. Newer »
This thread is closed to new comments.