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 Windows or Linux machine will do. However, to get the most out of the educational experience of owning a computer, you should have a machine that is:

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.

General Recommendations

Any reasonably recent computer (no more than, say, two or three years old) will work out fine. Any other decisions you make past this truly come down to working style and personal taste.

A very nice desktop system that will do everything you need 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.

Programming laboratory work in CSE courses is done on university managed personal computers. These computers run either Windows or Linux. The software we use, however, can run on an Apple Macintosh computer. So, a computer with any of these operating systems can work for you.

Laptops are very convenient, especially since the university has wireless networking available nearly everywhere. You will need to balance out the tradeoffs between weight and screen size. If you get a laptop with a smaller screen for improved portability, consider also getting an external LCD monitor for desktop use. Long hours of programming or writing on a laptop can tire one's neck due to the low position of the screen. If you buy an external monitor, consider purchasing a USB keyboard and mouse, too.

Processor speed is not terribly important, but a "netbook" might be insufficient as one's sole computer. If you're buying new, consider 2GB RAM and 120 GB disk minimum; newer operating systems are storage hungry. For networking, 802.11n is becoming standard, but 802.11g is fine. Three USB 2.0 ports is useful, and an ethernet port can be handy in the dorms.

Get a service plan for the laptop that is appropriate for the wear-and-tear that you'd like to cover. Plans vary from one year parts-and-labor to 5-years cover-everything same-day onsite repair. Three years is a good length, and if it doesn't seem too pricey, covering drops and spills protects your investment "in the wild". The campus has an on-campus repair center for Macs and Dells. There is also an Apple Store just a couple of miles away. Other brands would generally be express-mailed back to the manufacturer.

An important thing to think about - and often overlooked - is backup capability. If you get a DVD read/write player in the laptop, then you can backup to DVD, although backing up 4.5GB at a time can be tiresome if storing lots of pictures and music. Otherwise consider getting a USB external hard drive for backup, or employing an online backup service.

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.

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

Prof. Kube demonstrates his renowned hacking technique