Seven senior computer science majors teamed up to apply extreme programming in a real-world situation, creating a specialized software application for Third Street Alliance for Women and Children, a nonprofit social services agency in Easton, Pa., offering wellness and education programs for men, women, and children; childcare; shelter for homeless women and their children; and adult day services.
It was challenging for the team and beneficial to the agency, says instructor Penny Anderson, assistant professor of computer science.
“We wanted a significant senior project that would give the students experience dealing with a customer, and Third Street Alliance was appreciative when they realized that work that had taken several hours could be accomplished in a couple seconds,” Anderson says.
The agency’s director of development, Betsy Walker, longed for a computer application that would help her compile mailing lists from information lodged in four different databases. The process of eliminating duplicate names was painfully time-consuming but very necessary, says Walker, to avoid wasting the organization’s precious funds on excess postage.
After holding meetings at Third Street Alliance to determine Walker’s needs, the students wrote up a technical document proposing their solution, secured the organization’s approval, and divided up tasks.
“To have seven individuals on a project changes things. It demands better communication and organization,” says Steven Krossner (Duluth, Minn.), who worked with David Greenberg (Sparta, N.J.), Matthew Kemmerer (Kingston, Pa.), Nathan Landis (Boyertown, Pa.), Brian Leap (Elizabethtown, Pa.), Erik Parker (Quakertown, Pa.), and Jonathan Rowe (Reading, Pa.).
“We decided to use a version-control-management system, which keeps a working history of every change made to the [computer] code each day,” Krossner continues, noting that learning a new programming language, VisualBasic 6, was an additional challenge for most of the team. “I think learning VisualBasic is an asset. Even though it came out in 1998, a lot of businesses still use it.”
Anderson says, “The project was a process of trying to apply good software engineering practices. I gave them very little explicit direction because I wanted them to take responsibility for the planning and execution.”
“The opportunity to self-manage was important. We went down some bad routes, but we always got back on track,” Rowe says. “Working with a real client adds a different perspective. We knew that if we created something that was not of the highest quality, we were actually affecting the client.”
“They’re really strapped for technology,” Rowe adds. “It was great to give them so much functionality. Being able to deliver a real product to a real client and see the reaction was very gratifying.”
One lesson the students could never have learned in a classroom was that an application that seemed so simple would require so much work. They thought it would get written and delivered a lot faster than it did.
“In the beginning we were writing source code too fast,” Krossner says. “We had three code reviews that helped us restructure the program to make it more flexible, modular, and object-oriented. That’s what they’re looking for today in business. At times things got a little hectic, and there were some communication issues, but I wouldn’t expect anything less in the real world. There’s a whole dynamic to working with other people.”
Lafayette’s computer science major prepares students in a powerful way by combining technical rigor with real-world experience, Rowe says.
“I feel very prepared,” he says. “The scientific background here is very strong, but in actual application I feel we have an edge. The faculty does a good job of balancing current technologies with underlying principles that govern them. The technologies are transitive, but you can always apply the fundamentals to any program.”