The list of companies that have hired Hank Childs’ students includes the biggest names in technology: Intel, Amazon, Google.
That’s no surprise given Childs is a big-data expert—his students learn high-performance computing in tech-heavy classes on programming and data visualization. But Childs is also having success placing students who take his course on the more creative side of computer and information science: Introduction to Computer Graphics.
As taught by Childs (above), the course is basically about making video games. Students have created billiards contests with moving pool balls; self-styled versions of the classic competition Connect Four; even a simulation of airplane flight, from the pilot’s vantage point and complete with exploding targets.
What’s a video game got to do with landing a job? Plenty.
Building a video game from scratch is just a means to an end, says Childs, an associate professor. Along the way, students are immersed in complementary halves of a comprehensive education in computer science—the theory, which is about how to solve problems, and the programming, which is the use of a language that tells a computer what to do.
“Computer scientists deal with the theoretical pieces and computer programmers are expert at developing software,” Childs said. “Both are really important.”
Q: Computer graphics seems like the course to take if you want to work at an animation studio like Pixar. But Intel?
Hank Childs: The reason I tell seniors they should take this class is not because I think it’s critical they learn computer graphics. It’s because the projects and practical programming skills they will develop will benefit them once they graduate.
When most people take a graphics course, they use a graphics card or GPU—a GPU is a graphic processing unit, a special piece of hardware that allows your computer to do graphics. My students effectively create their own version of a GPU by writing thousands of lines of code. It takes weeks.
That’s the secret of the class: When they’re done, they can tell people what they’ve done and computer scientists will say, “That’s really impressive, you developed difficult and practical software and combined it with a lot of theoretical computer science.”
Q: So how does this class on graphics work?
HC: The first five weeks, everyone works on the same project—we build a graphics system in software from the ground up, by writing code. The next two weeks, we learn how to do graphics the conventional way, using GPUs. The last three to four weeks, students create their own computer graphics projects—they can do whatever they want.
I lecture on computer science theory and they use that in their programs. But the students spend most of their time working on practical programming issues.
Q: What’s the role of local gaming companies in all this?
HC: We bring them in to judge the final projects. It’s a chance for the students to show off what they’ve done and make connections in the industry. Some of the final projects are video games, so that’s a natural match with our judges.
One company that helps judge is Pipeworks. Their participation has directly resulted in two of my students getting recruited by the company. When I did this class in spring 2013, Brad Syrie was immediately hired by Pipeworks. He did a first-person shooter from the perspective of paper airplanes, and the company was very impressed. At Pipeworks, he has worked on a game for the Godzilla movie. Last year, another student—Sean Fowler—did a great project on billiard balls bouncing around the table. Pipeworks hired him, too.
The students who are getting jobs at Pipeworks are getting them because they know the graphics. But I have another student who went to Amazon—Jason Kranz. He told me that he spent his entire day interviewing there talking about our projects. And at Amazon, he’s not using graphics at all.
Game programming gets students excited, and it’s a great connection to local industry. This year, we introduced a new class devoted entirely to game programming [taught by instructor Eric Wills]. Between my graphics class and that class, students can be very marketable when they graduate.
Q: How has your career in both industry and academia prepared you to mentor students?
HC: I think it makes me a little different. After I graduated with my bachelor’s degree, I got a job. I didn’t come back to get my doctorate until later.
I took a job at Lawrence Livermore National Laboratory, and I gained a lot of experience developing and managing software. One project that we delivered was a tool for big-data visualization—it’s available to the public and it’s been downloaded hundreds of thousands of times and is in use around the world.
When I was an undergraduate, the classes that helped me the most were the ones where I had to do big programming projects. I could have gotten a degree without as much programming, but that’s the piece that allowed me to soar in the job I took. Now that I’m on the other side as a teacher, I want to make sure that I’m giving students not just the theory but also the real-world programming skills. When you have both, that’s when employers really get excited.
Q: What skills do students develop in a class on computer graphics?
HC: They’re writing lots of code—they’re using a programming language called C++, which is one of the harder languages to use. When I talk to industry people, they say, “Well, if you know one language, that’s a great one to know because it’s hard.” You know the saying about “making it in New York”? If you can learn C++, you can learn any language.
Also, of course, they’re learning graphics skills. The people who are going on to video game companies are doing graphics jobs. You could also work in movies. And they can also do data visualization—that’s presenting data in pictures or graphics, which is my area of research.
Q: It sounds like students are essentially learning software development.
HC: Exactly. When you first learn computer programming, you write programs that are one hundred lines of code, at most. But in industry, you work on programs that could be millions of lines of code. With our projects, students start developing the practices that software professionals use to allow their programs to “scale,” to handle bigger and bigger tasks.
Students also learn debugging. Once you have thousands of lines of coding, you can’t go through it line by line to figure out why it crashed. You have to write a program to figure out what’s going on. It’s like the scientific method: You generate a theory, you perform an experiment and you see what happens when you make this change or that.
Q: Is it fair to say students also learn project management?
HC: Yes. When students do a five-week project, that’s a great skill and it’s something many haven’t experienced before. Not everything can be done the night before—you can’t just stay up late and drink a lot of coffee and get it done.
For that five weeks, where they’re creating their own graphic system by writing code, it’s a five-week sprint. You have to plan ahead. It’s time management, it’s organizational skills. It’s the perfect thing that tells an employer, “They can handle this stuff.”
Photo credit: Hank Childs photo by Matt Cooper/Godzilla Unleashed, Pipeworks