Why computer labs should never be controlled by individual colleges/departments

Some time ago in academia we realized that it didn’t make sense for individual scientists or even entire departments to maintain their own high performance computing resources. Use of these resources by an individual is intensive, but sporadic, and maintenance of the resources is expensive [1] so the universities soon realized they were better off having centralized high performance computing centers so that computing resources were available when needed and the averaging effects of having large numbers of individuals using the same computers meant that the machines didn’t spend much time sitting idle. This was obviously a smart decision.

So, why haven’t universities been smart enough to centralize an even more valuable computational resource, their computer labs?

As any student of Software Carpentry will tell you, it is far more important to be able to program well than it is to have access to a really large high performance computing center. This means that the most important computational resource a university has is the classes that teach their students how to program, and the computer labs on which they rely.

At my university [2] all of the computer labs on campus are controlled by either individual departments or individual colleges. This means that if you want to teach a class in one of them you can’t request it as a room through the normal scheduling process, you have to ask the cognizant university fiefdom for permission. This wouldn’t be a huge issue, except that in my experience the answer is typically a resounding no. And it’s not a “no, where really sorry but the classroom is booked solid with our own classes,” it’s “no, that computer lab is ours, good luck” [3].

And this means that we end up wasting a lot of expensive university resources. For example, last year I taught in a computer lab “owned” by another college [4]. I taught in the second class slot of a four slot afternoon. In the slot before my class there was a class that used the room about four times during the semester (out of 48 class periods). There were no classes in the other two afternoon slots [5]. That means that classes were being taught in the lab only 27% of the time or 2% of the time if I hadn’t been granted an exception to use the lab [6].

Since computing skills are increasingly critical to many areas of science (and everything else for that matter) this territoriality with respect to computer labs means that they proliferate across campus. The departments/colleges of Computer Science, Engineering, Social Sciences, Natural Resources and Biology [7] all end up creating and maintaining their own computer labs, and those labs end up sitting empty (or being used by students to send email) most of the time. This is horrifyingly inefficient in an era where funds for higher education are increasingly hard to come by and where technology turns over at an ever increasing rate. Which [8] brings me to the title of this post. The solution to this problem is for universities to stop allowing computer labs to be controlled by individual colleges/departments in exactly the same way that most classrooms are not controlled by colleges/departments. Most universities have a central unit that schedules classrooms and classes are fit into the available spaces. There is of course a highly justified bias to putting classes in the buildings of the cognizant department, but large classes in particular may very well not be in the department’s building. It works this way because if it didn’t then the university would be wasting huge amounts of space having one or more lecture halls in every department, even if they were only needed a few hours a week. The same issue applies to computer labs, only they are also packed full of expensive electronics. So please universities, for the love of all that is good and right and simply fiscally sound in the world, start treating computer labs like what they are: really valuable and expensive classrooms.


[1] Think of a single scientist who keeps 10 expensive computers, only uses them a total of 1-2 months per year, but when he does the 10 computers aren’t really enough so he has to wait a long time to finish the analysis.

[2] And I think the point I’m about to make is generally true; at least it has been at several other universities I’ve worked over the years.

[3] Or in some cases something more like “Frak you. You fraking biologists have no fraking right to teach anyone a fraking thing about fraking computers.” Needless to say, the individual in question wasn’t actually saying frak, but this is a family blog.

[4] As a result of a personal favor done for one administrator by another administrator.

[5] I know because I took advantage of this to hold my office hours in the computer lab following class.

[6] To be fair it should be noted that this and other computer labs are often used by students for doing homework (along with other less educationally oriented activities) when classes are not using the rooms, but in this case the classroom was a small part of a much larger lab and since I never witnessed the non-classroom portion of the lab being filled to capacity, the argument stands.

[7] etc., etc., etc.

[8] finally…

10 Comments on “Why computer labs should never be controlled by individual colleges/departments

  1. Why not just remove the computer lab entirely? Many (but of course not all) will already have a laptop. At my current university, students (and faculty) can check out laptops (and iPads) from the library and take them anywhere (i.e., steep hourly fines for not returning on time). They come preloaded with standard windows software, but any software can be installed as hard disks are ‘wiped clean’ upon return. Furthermore, colleges have laptop ‘carts’ (20-30 laptops) that can be checked out to an instructor and used in any classroom.

    There are limitations of course: laptop specs may not be ideal (but probably comparable to any general ‘stock’ computer lab), reduced screen size, reduced keyboard, etc. Specific labs would still be necessary for certain tasks (e.g., heavy GIS processing) and general labs still useful for homework (usually located in libraries, classroom buildings, etc.). Laptops sitting in the ‘cart’ are not being used and perhaps a waste of money, but it solves the space and scheduling issues.

    Longer or more robust computations/analyses can be submitted to the school high performance cluster or even a simple department or lab server (the new RStudio Server is supposed to make this incredible easy with R, no more teaching ‘nohup’ and other simple terminal commands). Or (since I’m talking big) labs or classes can fire up their own high performance cluster on Amazon EC2 (or Elastic MapReduce and use hadoop for the really big datasets), skipping the university bureaucracy (and all its troubles) entirely.

  2. Those are great points Brady. In the process of making my classes work for this fall we’ve discussed and/or implemented many of them. I’m not actually worried about computing power, so that’s not an issue, the big benefit of labs, and the challenge of non-lab solutions, is making things easy for students who are learning to do something they perceive as challenging. Labs homogenize the experience and make things easier on students, which is why I still like them as the default for teaching computational tools.

    The problem with individual and general university laptops is actually software. Individual laptops run a huge array of operating systems (Windows XP, Vista, and 7 in 32 or 64 bit flavors, Mac OS X, multiple flavors of Linux), so unless we require all students to have the same operating system (which I think is a really bad idea) this means that even if you’re using truly cross-platform software (which you often aren’t) you’re probably going to spend a week up front getting everything installed (e.g., we use BASH in one of my classes and successfully installing Cygwin on Windows is a real challenge for the average user; anything without precompiled binaries is even worse). Any amount of hassle up front in getting things to work is definitely not a good way to start the semester when teaching scientists about computing. Likewise, getting all of the relevant software for a computing class installed on general computers that are checked out by individual students is pretty much a non-starter due to both licensing and general feasibility.

    The “laptop cart” solution is what we (sort of) ended up going with. The challenge here is two-fold. First, if its truly available to anyone on campus then the challenges of getting a single disk image that will work for all possible users is not insubstantial. Second, and more importantly, unless the software used in the class is also installed in a general lab somewhere then where do the students do their homework? We ended up purchasing our own laptop cart for our department and it will be stored in a general purpose teaching lab with a key pad on the door and a combo lock on the cart so that students can come in and work on things when the lab isn’t being used for classes.

    I really like the idea of basically doing everything in the cloud so that all you need is a browser. We could probably rig something like this for BASH if it isn’t already out there, and Rstudio does brilliantly solve this problem for R, but I’m guessing that a full blown Python IDE with a good debugger is probably a few years out (If anyone from Wingware is reading this, I think that Wing IDE Cloud has a nice ring to it). I think that this is definitely the right direction to be moving in as it would largely remove all of these infrastructure challenges from teaching computational skills and would end up saving universities, colleges, and even high schools a huge amount on computational resources.

  3. I do sympathize working with Cygwin. When I returned to unix some years ago, I quickly gave up on that; there was always a little problem somewhere. As cloud development progresses, maybe thin laptop clients will be the way to go (e.g., Google Chromebook).

    Your comment of a cloud Python IDE made me remember Cloud9 IDE (cloud9ide.com). It was originally made for javascript, but their website now indicates Python support. I don’t know how it is, but their blog also mentioned they received $5.5 million in funding last week. Services may improve over the next couple of months.

  4. Yeah, exactly. Getting this down to having a stack of Chromebooks would be perfect. At that point you could just be issued one when you started college, or since everything is through the browser the university could just require that all students have a laptop, any laptop, and bring it to class.

    I wasn’t familiar with Cloud9, but I’m pretty excited about it after playing around with it for a few minutes. It looks like there is just syntax highlighting and execution for Python at the moment, but the debugger and lint system for Javascript looks fantastic. If they get Python up and running with a full IDE I would definitely use this for my class. Thanks for the pointer!

  5. Hi Ethan,

    At our university students are required to have laptops, but notwithstanding the problems youmentioned in your reply to Brady (standardization!) the problem in my department is that we’re not teaching programming! I have a blog posting about this up my sleeve but my basic thesis is that we who program should be teaching programming regardless of what subject we dress it up as.

  6. My college in China has a central computer building. This building has three floors of computers and each floor is divided into several classrooms by glass walls. The building is run by the same group of people who schedule classes and classrooms. Most of the entry- and mid-level programming classes are taught in this lab. When there is no class scheduled, any student in the university can use the computers. As far as I can remember, those desktops in the building are used more often than those sitting in my departmental lab here in the US.

    Software can be a problem with this strategy, though. I am studying in a geography department and some courses here need software like ArcGIS and ENVI. To teach those courses, one may force to maintain a separate lab that is dedicated to these courses, because of the financial reason. Individual department, in fact, is the ideal candidate to run this type of lab. In fact, when I was in China, I had my biostats lab in a departmental lab, because the instructor was teaching SAS.

    Some balance may need to be achieved between the big central university-owned and the small isolated department-operated computer labs.

  7. @trashbird1240 – I couldn’t agree more and I love the blog post that you just put up (here’s the link for anyone else who’s interested).

    I also think that in order to do this efficiently, i.e., to get the greatest amount of useful content delivered to scientists in the manner that they will best retain it, that this training cannot be farmed out to the computer science departments. The CS departments are, appropriately, training folks who are interested in a lot of theoretical stuff that isn’t all that useful to scientists (e.g., how a hash table works) who just want to use programming to facilitate science. We can cover a lot of important ground more quickly if we eliminate that part of the course work leaving room for things like SQL, shell scripting, and version control. I think going one step further and targeting this training towards specific disciplines (e.g., biology) further improves things by allowing us to show the students examples of how this helps them with their science, rather than some more generic feeling of utility. The beginnings of my attempt at this type of class is here and I’ll be teaching a more advanced course this fall. I would desperately love to see courses like this get going elsewhere.

  8. @Yang – You make a great point about the challenge of balancing the needs for general access with the need for specialized labs when expensive proprietary software is involved. That’s something I hadn’t thought about a lot since I use mostly free or generally available software in my classes. I’m definitely jealous of what sounds like a fantastic central computing facility and I’m glad to here that the kinds of benefits related to usage that I was envisioning do seem to be supported in at least this one case.

  9. Perhaps a bit late, but some recent events prompted additional thinking. In reference to cloud IDEs and web based software, when you teach your students database design, management, queries, etc. do you use a web based client? That is, an interface that is hosted on the database machine, along with a web server, that allows users to interact with the databases? (e.g., phpPgAdmin for PostgreSQL)

    I attempted to help someone with connections to my database machine; they were very quickly turned off to using the native postgres client (via terminal, which I tend to use a lot) and wanted a graphical client (more reason for programming classes, forces people to use something other than microsoft office and occasionally type a command). Then they had trouble installing the graphical client software and gave up; said they would try it another day, but I haven’t heard from them since. I couldn’t help but think a web based client would’ve worked from the get-go.

  10. I use a desktop database management system (either MS Access or Open Office Base) as a gateway database to get people engaging with the ideas behind relational databases. Once that’s working then I show them how to connect their systems to database servers using ODBC (folks who don’t do much of this stuff tend the think that this part is pretty cool). Then we start to look at the SQL that the GUIs are generating and anyone who wants to keep going can move on from there if they need something more substantial. I suspect that this stepping stone approach has a higher conversion rate than taking someone out of Excel and dropping them straight into something (even a nice web based client like phpmyadmin) that requires the SQL to be written by hand.

    In my first run of the advanced class this fall we’ll be using SQLite with the Firefox add-on to learn SQL and then learn how to interact with the database directly from Python.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: