“Would you ride in a car if you wrote the software that controlled its brakes?”
That’s a question Ray Klefstad sometimes asks his students to emphasize the implications of their work. Klefstad, who recently became the associate professor of teaching in the Department of Computer Science, further explains: “What they’re doing is important. People’s lives could be at stake.”
This, in turn, emphasizes the importance of Klefstad’s work — particularly in his new role as associate professor of teaching, which involves assessing best practices for computer science education. In addition to teaching computer science courses, he’s tasked with developing teaching techniques and conducting research related to pedagogy. “It’s really wonderful that the University of California is valuing people who are excellent teachers,” he says. “For years, we’ve focused on excellent research, but we’re now recognizing and promoting excellent teaching as well.”
And who better to take on this new role than Klefstad, who has won 17 teaching awards at UCI, including 2017 Lecturer of the Year.
From Aerobics to Active Learning
The UCI alumnus admits that he wasn’t always an engaging instructor. He earned his BS (’81), MS (’82) and Ph.D. (’88) in information and computer science at UCI, and he first started working as a lecturer while finishing his Ph.D. Back then, “students would comment that I was like a robot, a machine expecting perfection,” he notes. His colleague Stephen Franklin told him to be more “human” so students could relate to him, which helped. He also taught aerobics, which required motivating people to work out: “I’d get them all screaming, having a blast,” says Klefstad. So he started taking a similar approach in his computer science classes. “I would play the role of a coach, guiding my students through tough material and getting them enthusiastic about programming and problem solving.”
Klefstad is also enthusiastic about teaching at UCI. “I love it here. I’ve worked at three or four different schools, and I came back because I really missed ICS. I like the design of the program, which is broad and yet deep. And the faculty are top-notch, so it’s great to work with them.”
He looks forward to reporting back to his colleagues about new tools and techniques for the classroom. One new application he has been using is LiveQuiz, which lets him set up specific problems for the students, who then code their answers on their electronic devices. This lets Klefstad see their first drafts, and the entire class can proofread the code anonymously using Piazza. “I usually only see the final draft, but with this, we identify errors that students make, and the students help identify errors as well. And it’s a very short turnaround cycle.”
Klefstad also helps guide his students through university life, offering a slew of useful advice on his website. “We’re trying to help them grow up,” he says, explaining why he tries to teach them skills such as time management and note taking. For example, he says research has shown that it’s more effective to take notes on paper, because you’re better engaged with the material. “I’m a big believer in active learning,” he says, which is why he’s constantly trying out new ideas in his courses and lectures, especially in terms of practical application.
In one class this quarter, he offered extra credit to students who completed an advanced GUI (graphical user interface) project. He says that about one-third of the class did the assignment, and one-ninth created really impressive projects that they can add to their portfolio. This is something employers like to see. “Whenever I can, I talk to recruiters from Google, Microsoft, Facebook and so on to find out what skills they’re looking for and what kinds of problems they’re giving during technical interviews.”
Use It or Lose It
Yet Klefstad isn’t just talking to recruiters and teaching students; he’s also practicing his own skills and learning new ones. “It’s important for people who teach programming to do programming. If you don’t use it, you lose it.” In addition to teaching three courses this quarter — C++, Programming Languages, and Computer Systems Architecture for the new Professional Master’s Program — he writes programs for fun. “I’m working on a program right now that uses hill climbing with simulated annealing to do course scheduling. It basically finds solutions that minimize conflicts.”
He also attends as many seminars as he can, and he plans to learn the language Go. He already knows 20 languages expertly, but he says that you have to constantly learn new ones. “If you start coasting, you’ll be out of a job because your skills will be out of date.” Clearly, Klefstad likes to practice what he teaches!
— Shani Murray