What computer should I get?

As a student advisor in the Computer Science and Engineering Department at UCSD, a question I often get is: "What computer should I (or my son or daughter) buy to use at UCSD?" I've put together this web page so I don't have to repeat the same answer so often.

Do I need to buy a computer?

The short answer is: No.
Every computer science course at UCSD provides instructional labs with all the computer equipment you'll need. Many students at UCSD do not own their own machine.

However, you might still want one, because

Okay, if I'm going to have my own computer, then...

... what computer should you get?

To write term papers, surf the Web, send email, and write and compile programs, almost any Apple or Wintel machine will do. However, to get the most out of the educational experience of owning a computer, you should have a machine that is:

A very nice desktop system that meets these requirements can easily be bought new (or used) for less than $1000. Also, good used and even new laptops are available for that price. A laptop computer will cost somewhat more for the same computing power, and will sacrifice some ergonomics, but can be quite usable for getting work done, plus offering the convenience of portability. Laptops also typically use less energy than desktop machines.

You might want to read the discussion on this general topic on Slashdot.

I used to try to make specific hardware recommendations. But specific recommendations rapidly go out of date as hardware availability changes. So here are some general recommendations. (Note that Apple products are also worth considering. Their main disadvantages are that they cost somewhat more for the same performance, and the releases of Java for Mac OS X tend to lag one version behind those for other platforms.)

Comments:

If you are building a desktop, I recommend custom-building your system from components, so you get the educational benefit of knowing what's inside it. If you buy components locally you may get better access to technical advice and warranty support.

You can spend less if you buy a used machine. Also, Dell sells factory reconditioned systems at a reasonable price. Even something as antique as a used 486-66 system with 16MB RAM will work adequately with Linux, if you can find or already have one in good shape. And (of course) you can spend more if you want; a faster processor, more RAM and disk, sound, a high-end video card and a big monitor are nice, but cost more.

A note about operating systems: Windows costs money to buy. Contact swdist@ucsd to ask about campus licensing arrangements, or visit the software section of the UCSD Bookstore. However, since it is not used in all that many CSE courses, having it on your machine is not essential. Comparatively, the availability of free Unix-like operating systems and utilitites, including source code, provides a tremendous learning opportunity, and installing, using, and contributing to one of these projects is highly recommended. The links above or below are places to start:

The Linux Center project
Linux Gazette Front Page
Linux Today news
Slashdot: News for nerds

You can easily install both Windows and Linux ("dual boot") with lots of applications on a 20GB disk (you can also have DOS, Win95/98, BeOS, OS/2, etc. if you want, though at some point you'll want more disk!) and switch among them. Linux installation guides explain various ways to do this.

For more detailed information that stands a chance of being at least somewhat up-to-date, do a web search or groups search on Google.

Now that I have a computer, what compilers should I get?

Most CSE programming courses use C, C++, or Java as languages of instruction, and use Unix environments. If you want to closely approximate the course lab environment, the GNU gcc/g++ compiler, available free with any Linux distribution, is excellent for C and C++. For Java, ports of the JDK for many operating systems are available.

For Windows, C/C++ and Java development environments are available from Borland, MetroWerks, Microsoft, and others.

Have fun!
If you have comments or suggestions, email me at kube@cs.ucsd.edu

Prof. Kube demonstrates his renowned hacking technique