Applied Software Engineering
Many in academia narrow their research focus over the years, but Professor Mohammad Moshirpour’s work falls across a wide spectrum. “With applied software engineering, you can build anything,” he explains. “So I have moved into quite a few different areas.” His research spans software design and development, software requirements engineering, artificial intelligence and machine learning, and software engineering training and education. “I’m also very much focused on software engineering best practices,” says Moshirpour, who serves as director of the Software Engineering Practice and Education Research Group. “It’s not enough to build things; you need to build them well.”
Solving Real-World Problems
Professor Moshirpour’s projects are often in collaboration with other organizations and companies. Partnering with nursing faculties at the University of Calgary and the University of Washington, he’s using machine learning to provide feedback on parent-child interactions. Also with the University of Calgary, he’s exploring virtual reality as reminiscence therapy for senior citizens with illnesses such as dementia or Alzheimer’s. Working with industry partners, he’s employing ML and computer vision methodologies to optimize network capabilities for audio-visual data, and he’s also using ML for pipeline lead detection.
Learn by Doing
Professor Moshirpour carries this focus on application into his teaching. “My philosophy is that engineers are practitioners, so our education should be similar to that of other practitioners — namely, doctors and surgeons,” he says. “It needs to be very hands on; we learn by doing.” He says students must practice building software that is robust, secure and modifiable. “One of the most important things that we do as software engineers is plan for change,” he stresses. He views hackathons as a great resource. “Hackathons get people working and delivering something. They’re an effective tool for learning and assessment.”
“One of the most important things that we do as software engineers is plan for change.”