Computer Science Students Tackle Real-World Problems
For those who don’t often communicate through code, it can be difficult to imagine how to bridge the gap between brackets and numbers to real-world application. But in Associate Professor of Computer Science Peter Drake’s Software Development course, it’s the name of the game.
First taught in 2008 under the name Topics in Computer Science, the course quickly evolved to become a linchpin in the computer science catalogue, offered biennially before faculty established it as a major requirement that students could take each year. In the class, teams of four to eight students work to address the types of problems that professional software developers face on a daily basis that often involve multiple concepts and opposing pressures.
Customers come from within the college and from local businesses, government agencies, and nongovernmental organizations. This past year, projects included website and database development for Portland’s Bureau of Emergency Management to keep track of equipment loaned to volunteers, video game creation to help bolster earthquake preparedness, and improving a software program that tracks fruit fly larvae for Associate Professor of Biology Norma Velazquez-Ulloa.
“Think of chess,” Professor Drake says. “In addition to the rules for how each piece moves, there are issues to resolve like the special move pawns get on their first turn, promotion, when you are and aren’t allowed to castle, the way putting the king in check affects which moves are legal, and so on. This course gives students experience with real-world problems, which are even messier.”
For Terin Trachtenberg BA ’22, a computer science major from Lincoln City, Oregon, the thought of practically applying coding skills to make real software for real people felt intimidating. In his project, the team was tasked with development of an earthquake preparedness video game using Unity, a game engine that most students did not have experience with. Despite that learning curve, Trachtenberg felt as though his team could identify areas where the code needed improvements by the end of the project—a clear signal that their understanding of game development had sharpened.
“I would definitely consider this type of course as an essential part of my learning process in computer science, because it’s by far the closest to the kind of work I can expect once I’ve graduated,” Trachtenberg said. “These experiences and skills are going to be invaluable in a programming career, and I’m grateful to have gotten the chance to give them a test run while I’m still in college.”
While collaboration between students and faculty is often a staple of Lewis & Clark courses, for Professor Drake, the beauty of the Software Development course is the level of independence that students are able to practice. The class meets for three hours, twice a week, and all coding is completed during that time. By the end of the semester, many students say it is the most valuable course they have taken at the college.
Aside from the practical skills students gain from experience with specific tools like JUnit and Git, students are also able to grow as members of a team—planning, organizing, and communicating with fellow classmates while capitalizing on opportunities to network with a customer. For customers, the solutions provided can range from “proof of concept” software to a precise answer to a problem. In fact, one year a customer’s satisfaction with the work produced led to the hiring of most students in the class.
“In either case, it lets them work with our students for a couple of months, which is much more informative than any résumé or job interview,” Professor Drake says.