Home

Teaching

Research

About me

Buying a computer: CPSC Students (James Tam)

JT's Disclaimer: although there are technical references and information provided in this document a good deal of it is strictly my opinion so you can use the information as you see fit.

 

Target audience for this document

Computer Science students, specifically ones who are just beginning their academic career so they aren't quite as comfortable with technical specifications yet.

 

Bottom line: for those who don't have a lot of time to read a long document

To a large extent whatever machine you buy won't have a major effect on your studies. Unless you buy an ancient second hand relic the computer you end up with should probably be able to handle any of the coding you will do as an undergrad. (However there are a few potential exceptions - detailed below). Using myself as an example when I was an undergraduate student here in the late 1990's when I did my work at home I was running on a 7.14 MHz (no typo, that's millions of Hertz) Amiga2000 HD computer with a 2,400 baud modem and the text-based terminal program JRComm. When I scrolled through my programs, that transfer rate roughly matched my normal reading speed so it wasn't as bad an experience as it seemed. If there was a major lag then mostly it caused by the servers on the Computer Science network rather than my own machine/online connection. (Problem: Too many students running too many processes on the same server. Solution: try another [compute server]). When I was a faculty member here I eventually migrated to Win95 (233 MHz Pentium MMX) and then a 3.x GHz Pentium IV (purchased ~2003). When the latter machine suffered from a major hardware failure I was able to get by running a Celeron (wimpy version of a Pentium IV) with just 1 GB of RAM until fall 2013. But until that time I was able to do all my work as a tenured faculty member in a Computer Science department (meaning that in terms of programming/productivity work) I'd probably be pushing my hardware more than a typical under graduate student. Thus back to my original assertion, unless you buy some ancient machine you can probably get by (although you might drum your fingers a lot waiting for your machine to finish it's tasks...)

 

Upgrading a system

Think your machine is too slow? Want to upgrade but can't afford to upgrade it all? Want some clues as the what may be bottlenecking your system? Most people automatically think that the processor is culprit. (Figure 1) Sometimes that may be true. Other times it may be something else. Try viewing the processes on your computer ("Task Manager" in Windows, "ps" command in UNIX). Make sure that you are looking at all the processes running. With some operating systems the default may only show the processes of one user whereas a system process or process not run by the user (e.g., anti-virus software) may be the true resource 'hog'. To see the full picture you would select "Show processes from all users" (See Figure 2 for where to do it with the Windows Task Manager) or some argument to 'ps' in UNIX (e.g., "ps -aux") - type 'man ps' at the UNIX command line to find out the specific argument required for your version of UNIX.

Figure 1: A number of tasks are demanding a fair amount of the processor's time

 

Figure 2: Showing all processes

On the other hand, one very common bottleneck is RAM. More specifically the lack of it. Having insufficient memory on your computer may slow down your computer because more swaps to/from the storage device (hard drive, SSD) are required. Since accessing information from storage is significantly slower than from memory (even with a solid state drive) having an insufficient amount of RAM in your computer may be an even bigger bottleneck than the processor.  If your hard drive light is constantly flashing when your computer is running slow then you should probably examine how much memory is being used by the processes on your computer. In Figure 1, Internet Explorer was one of the main pulls on the processor time (actually it was the Flash plug-in because I was watching a Hi-Def video running through IE) whereas it can be seen that Firefox and Google software are the biggest culprits in terms of memory usage (Figure 3). (JT's extra note: Although I have Chrome installed - not by choice, simply because TopHat Monocle works best with this browser - I wasn't  directly running any Google software on my computer when I took this screen shot yet I noticed that Google software is #2 in terms of memory usage! IE does show up multiple times but that's because I opened multiple browsers, furthermore each instance uses fewer resources than Google software - which was automatically invoked).

Figure 3: Ranking processes by memory usage.

Operating system

Love it, hate it or indifferent Windows is by far the most common operating system on desktop/laptops. However it might be nice to have some version of UNIX (specifically Linux) installed so you can learn about some of the strengths of an 'expert' type of O/S so you might want to consider a dual-boot drive with both operating systems. If you want a remote connection (to work from home) then you can use a simple text-only connection (running programs like SecureShell or Putty) or something more elaborate like Cygwin which allows for graphics - although in my opinion in the latter case it might be easier to forego the remote connection and just run your programs on your own machine locally if you're doing something like GUI programming. The students that I know who have tried Chrome O/S laptops found them fairly expensive ("good bang for the buck") but lacking important features like the ability to print (not only handy when you are working at home on a larger program but printing on your own computer may be cheaper than buying printing credits here, depending on the type of printer you own and your print quality settings - so make sure you don't just consider the computer's price if you are considering that platform).

Course specific issues

In most cases this won't show up as an issue. As I said already as a person who is actually teaching courses (i.e., writing full solutions for the assignments that students have to complete) you can get by with fairly old hardware. Some courses with a lot of heavy duty advanced programming concepts (such as CPSC 501) are one of the few that may actually push your processor's capability - although that assertion was based on decade's old technology so even for courses like that you may not have any problems.

There have been some graphic cards that have conflicts with the graphical drawing libraries. If you want to find out if that will affect your work in the graphics courses (e.g., CPSC 453) it's best to  try contacting the current instructors directly [Faculty list for the department] [Three year teaching assignments for the department]

Other resources

Computer reviews (this site is targeted towards the general user so while you should be able to find their articles comprehensible they might lack some technical details)
http://www.pcmag.com/reviews/laptop-computers
http://www.pcmag.com/reviews/desktop-computers

Unsure if you should get a laptop vs. desktop, some pros and cons (you also might want to look through this site for some of the technical details that are missing from PC magazine)
http://www.tomshardware.com/reviews/desktop-vs-notebook,1946-2.html