Two Penn State Abington computer science majors created scheduling software for a real-life customer, experiencing the full development life cycle — from coding to client meetings — while working on the buildout.
Senior Alec Goldenberg and junior David Martinez tackled the client’s request as part of the class CMPSC 487 Software Engineering, taught by Ishtiaque Hussain, assistant professor of computer science.
“An undergraduate software-engineering course can give students a glimpse into the real world. In my course, that's what I tried to do, have a real customer and let students build a solution for the problem,” Hussain (pictured left) said.
He offered the students several alternatives for their course project, and they chose the most challenging one.
“Dr. Hussain told us it had a higher chance of failure compared to the other options,” Martinez said.
“But he encouraged us to pick this one because he was trying to see what we were capable of,” Goldenberg said.
The problem was presented by Zafer Hatahet, division head for science and engineering at Abington. Each semester, Hatahet would spend hours manually scheduling courses using multiple parameters including the list of classes, requirements and faculty preferences.
“Dr. Hatahet was looking for something a little more robust than pencil and paper,” Martinez said.
Hussain said they had numerous meetings with the customer during the fall semester.
“We showed him prototypes of the solution, got his feedback, and modified and implemented features to his satisfaction. The students learned firsthand that a customer's requirements change all the time. It requires great communication skills in eliciting and confirming the actual need, and then technical skills in implementing and delivering the software.” he said.
According to Martinez, it was an iterative process.
“It was a great learning experience, and it was humbling. We would go over the coding with Dr. Hussain, and he would pick it apart,” he said.
After months of research and coding, the pair successfully developed and delivered the scheduling software, executing a genetic algorithm for Hatahet’s problem in the Python programming language.
Hussain plans to continue having students implement software for real customers in the software engineering course.
“Software engineering in the real world is not just programming a solution. It involves customers, and meeting their actual needs is a big challenge. Sometimes customers don't know what they really want, or they cannot express their needs. Therefore, people in the software development industry must have technical skills as well as good soft skills, for example, great communication skills, working in a team environment, being agile in adapting changes.” he said.
Hussain was impressed by Goldenberg and Martinez.
“Alec and David were open to challenges, worked hard as a team in learning new software development tools, experienced the full software development life cycle, and finally delivered a working product. And in the process, I think, they figured out their strengths and weaknesses in software engineering. Alec and David are now in a good position to get ready for the workforce when they graduate,” he said.
Goldenberg found the undertaking gave him a better grasp of his career expectations.
“This project gave David and I a glimpse into the expectations of a client. A project like this teaches real world skills, which can help you with getting an internship or a real job,” he said.