Students Take a Deep Dive Into Software Development
Peter Drake, associate professor of computer science, teaches a 400-level capstone course that enables students to address real-world problems through software development.
Ken Clifton, professor of biology, had a problem. While leading the Tanzanian overseas study programs, he had collected data and images for nearly 400 species of fish in the local coral reefs. But he had no good way to organize the information and share with students as they undertook their reef studies. Students would have spent hours combing through field identification texts to locate relevant information. But with some prior knowledge of programming, Clifton knew there was an easier way.
He approached Peter Drake, associate professor of computer science, with this challenge that intersected their two disciplines. Each spring, Drake teaches a software development course (Computer Science 488) that is often considered a capstone for seniors. It enables them to apply their computer skills to real-world problems. In Clifton’s case, the computer science students created a mobile app that allows users to select different groups of fish—for example, butterflyfishes—and access images and information on their habitat and abundance.
“The students did a great job of listening to my needs and expectations,” Clifton said. “They told me what they needed from me and then put together a terrific app. Even though I have some programming skills, this was not something that I could have done on my own.”
This year, the course’s final projects ran the gamut of problem-solving for needs inside the Lewis & Clark community and beyond, from an educational chemistry simulation to assistance with the college’s ongoing earthquake preparedness project: a video game that simulates the experience of a real-life earthquake.
In preparation for the course, Drake identifies several projects and volunteer “customers” who have software needs. Students then work in small teams on semester-long assignments that fit their interests. Some projects focus on faculty requests for simulations or data organization, while others address work-related software needs for staff. No two final products are alike. One customer may receive working software that solves their problem, while another may receive a “proof of concept,” depending on the difficulty of the mandate.
For students, it is an intensive process that requires a large amount of independent work. Many find the experience provides a strong foundation for the workforce and postgraduate education. “Students are building the largest system they’ve made to date, solving a messy real-world problem for someone who might not be a programmer,” Drake said. “They’re also wrestling with the challenges of communication and organization that spring from working as part of a team.”
These challenges mean students’ coding abilities often improve significantly over the semester. Throughout the course, students are faced with topics like version control (managing changes made over time by the various team members), testing (verifying that the software is correct), organization (breaking a system into components and minimizing the need for communication between them), and clean code (writing code that is easy for human maintainers to understand).
“These ideas are hard to sell to students writing two-page programs, but for systems involving dozens of files, they become crucial,” Drake said.
The course is also an opportunity for students to work in a tight-knit team of four to eight, which builds up skills in communication and delegation that are essential when working in the industry.
In early May, students celebrated the completion of their projects in a software release party. On display were a number of products that computer science and noncomputer science students alike will appreciate: a system to schedule tutors in the Symbolic and Quantitative Resource Center (SQRC), a system to help graduate students upload videos of their teaching, and an artificially intelligent system to diagnose problems with medical equipment, among others.