CoC offers great options, needs focus

It’s called Computer Science. Not Information Technology, not Software Engineering, not Information Systems, not Programming and not a dozen other things that would pigeon-hole my major into just one bucket.

I like this. Computing is such a broad topic that trying to fit it into one of the fields above would mean a lot of cool stuff would have to fall by the wayside. But as much as I love computer science, I’m an engineer, too.

Despite the fact it isn’t in the College of Engineering, CS is very much an engineering discipline. Maybe the principles aren’t the same as in more typical types of engineering, but they’re still there. It’s just that instead of worrying about physical laws like gravity and stress, we have to look at things like the findability of bugs, optimizing our code, code coverage for tests and what happens when something fails.

Is there more to it than that? Yes. Dozens of mathematicians, cognitive scientists, and user interface designers would probably chafe at being lumped into engineering. But the fact remains: most of us are going to end up engineers to some extent. Whether we’re going to work on the next version of Windows, an operating system for a robot or TPS report generator for Initech, Inc., most of us are going to be working somewhere in software engineering.

The College of Computing does a great job in preparing its students for any eventuality. Of all of Tech’s majors, CS students easily have the most input into what goes into their degree. If you’re not familiar with the CS curriculum, students pick two of eight areas to specialize in, then build their degree off the intersection of the two. A student interested in robotics, for example, could take classes in Intelligence and Devices, where a gamer could specialize in Media and People, and the two would have radically different curricula.

Let me say this first: I love this system. It allows for diversity in what could easily be a monotonous, boring series of seminars on programming languages and when you should use which. It lets me specialize for a theory-heavy career, but still take classes like graphics, animation, and game AI.

But let me say this too: a lot of times it feels like students can specialize themselves into a corner, and that it’s very easy for a student to completely forgo skills that would be valuable in their careers in exchange for interesting concepts they’ll likely never touch again after college.

For both the administration and students looking at their transcripts, it’s worth looking at the two companies that amount to the two 800 pound gorillas of Computer Science: Google and Microsoft. Both have divided their engineers into three disciplines: Program Management (the people who design the program), Development (the people who write the code for the program) and Test (the people who make sure the program does what it’s supposed to). For students accustomed to designing, writing and running entire projects in one caffeine-and-panic fueled session three hours before the deadline, the changes from college projects to real world products is a cold slap in the face.

What little experience I’ve had with the industry seems backs this up. This summer I worked at Microsoft as an intern in the test division in Windows. Obviously I expected that professional software engineering had a more formal system in place than the code-submit-pray workflow I have developed at school, but it was still a bit of a shock when I didn’t touch a line of code for a month and a half.

Granted, I wrote a lot of code before the summer was over, but before that, there were several weeks of profiling systems, designing how my tool would work and proving that it would give data the developers could use. Despite getting a little antsy to write some code, it was a cool experience seeing where the ‘engineering’ in software engineering comes from.

Let me say it again: I love our curriculum here. Between learning cool concepts and learning practical tools, I would take the concepts any day. I love the freedom the CoC gives its students, and love the fact that it lets its students learn exactly what the cutting edge of computers is in any of a dozen of different fields. I love that the curriculum provides us with a strong jumping-off point for both grad school and industry. But, there has to be a way that a bit more practicality could be worked in without making any of the concepts suffer.