Imagine what I assume to be a common scene for many computer science students:

You have a large project due in two weeks for one of your classes. The professor has told you time and again that the project is hard, that you won’t be able to finish it all in one night. If you’re a diligent student, perhaps you start the project the day it’s assigned. If you’re less diligent, or perhaps just busy or unlucky, you don’t have time to start the project immediately, and then life gets in the way. Before you know it, it’s the weekend before the project is due, and you still aren’t anywhere near finishing the project. You’ve gotten started, and you have a general idea of what’s going on in the starter code, and you have a general idea of what you have to do.

However, when you finally get to work, everything that could go wrong does go wrong. When setting up the assignment, you download the file and it corrupts. This repeats ten more times before you finally discover that you’re downloading the wrong thing. You open the code to get started, and you spend hours digging through starter code without writing a single line. You struggle with compiler errors for an hour, only to discover a missing semicolon buried deep within the code. You encounter segmentation violation after segmentation violation after segmentation violation. You try to save the file, but through the magic of vim shortcuts, you delete everything— or better yet, your knee hits the power button on the computer, and just like that, hours of progress are gone. After hours upon hours upon hours of working in the basement lab of the GDC where the sun doesn’t shine, you begin to think that you’ll never live to see this project in working condition, let alone completed.

Sound familiar?

This wasn’t quite how my weekend went, fortunately. Due to poorly timed schedule conflicts and a busy life, my partner and I had finished only half the project by the weekend. We spent 5 or 6 hours on Friday night working hard to finish up the project, hoping we could still salvage our weekend, but we quit at 2am on Saturday morning after encountering a segmentaton fault that made absolutely no sense. And so we came back to the GDC basement lab on Sunday afternoon to put in the last bit of work needed to have a somewhat functional program.

In contrast to the emptiness that we’d experienced in the lab on Friday, the GDC basement lab on Sunday afternoon was almost a carbon copy of the situation that I outlined above: practically the entire lab was filled with people working frantically on this graphics project. Some of the people in that lab had only just started the project, and others had been working for 12 hours straight without taking any breaks. Every now and then, I could hear partners exclaiming in frustration as they encountered an insurmountable bug. Occasionally, I even heard people shout as they had a breakthrough and rendered something correctly on the screen.

In an environment so filled with stress over a common cause, the silver lining is the shared camaraderie that emerges. It’s an almost magical feeling that can only be found in the days before a major project is due for a very hard class— this intangible but clearly present understanding of each other’s struggle and determination to overcome. This purely organic experience, forged through shared struggle, is simultaneously the best and worst feeling you can experience; on the one hand, it’s better than working alone, but on the other hand, it’s emblematic of a tough problem that nobody has been able to cleanly solve. To witness this phenomenon, just drop by the GDC labs. On the 3rd floor, you’re likely to find OS students panicking about multithreading, and in the basement, you’ll find me working alongside the rest of the students who put their graphics project off far too long.

If you were a victim of the GDC Lab phenomenon this weekend, I wish you the best of luck in powering through and finishing that tough project!


The views, opinions and positions expressed by the authors and those providing comments on these blogs are theirs alone, and do not necessarily reflect the views, opinions or positions of UT Computer Science, The University of Texas or any employee thereof.