Algorithm for Success
Dr. Mohammad Moshirpour, P.Eng., thinks those learning software engineering should practise using real-life scenarios from their first year of study.
He’s providing this opportunity for students through bonafide industry experiences as an associate professor at the University of Calgary’s Schulich School of Engineering and its newly coined software engineering teaching chair. By creating partnered projects and mutual support in his lab, the Software Engineering Practice and Education Research Group (one of the largest research labs at Schulich), he hopes to marry the interests of the exploding tech industry in Alberta and the skills of his students.
“The goal is to transform our courses to a more practical approach to teaching software engineering and create a meeting point for industry and academia,” he says. This transformation is bridging the gap between a foundational knowledge of coding and the reality of the industry—how software is actually made. “It’s one thing to know algorithms, and it’s one thing to know code. It’s quite another to understand how complex architecture can be, and how to write production code. That’s exceedingly more difficult to do.”
Software engineers are responsible for writing, testing, and maintaining code and software systems and programs. They also develop applications for operating systems, analyze software requirements, complete updates, ensure system security, optimize software for speed and scalability, and consult with clients and stakeholders to determine their needs. They work with computer systems wholistically, considering future life cycle and maintenance. They accomplish this while taking responsibility for the quality and present and future ethical considerations of their work.
Schulich’s Master of Engineering in Software Engineering Program
The Master of Engineering in Software Engineering Program is a one-year fast-track master’s program offered to engineers looking to become trained as software engineers after they’ve obtained their engineering degrees.
Students go through a semester during which they learn the fundamentals of software engineering, and then take a series of advanced courses. The program includes an industry-relevant project course near the end of the degree, through which industry partners—local and international tech companies—support the students and provide training. Oftentimes, students get hired immediately following their project’s completion, enabling them to contribute to the industry in a meaningful, scalable, and effective way, launching on a successful career trajectory. This semester, there are just under 20 companies providing projects to around 50 students, with multiple students completing work for some of the organizations.
Moshirpour has flipped the conventional mode of teaching around, so students are prepared to keep current in an industry that moves as fast as a meme gone viral.
As part of his classes, students workshop problems after watching a pre-recorded lecture. “I show up and say, ‘This is the problem. Let’s develop this together.’ I start writing code and they start following along with me.” The project-based learning approach enables Moshirpour to switch from instructor to coach. He uses real-world examples to teach students to think big-picture, consider client and system requirements, and manage software development life cycles—all practises of software engineers.
To alter the world with your fingertips
“Software is going to have a life of its own. Think of an application like Facebook. It constantly changes over time. What we say is that software must be modifiable and maintainable.” Moshirpour points out it must be designed modularly, like a car: if the tires are stuck to the car, you can’t change them. “This concept of maintainability you can’t necessarily teach in a classroom because the students do an assignment, and they move on. They never work on a piece of code for more than a year. You must really work to make them understand why it is you do some things, because if you’re just going to drive a car once, you don’t really care if the tires come off or if they don’t!”
He conveys his students are trained to keep this maintainability top of mind and take responsibility for the product they create today, and how their product is safely and effectively maintained in the future. Ultimately, software engineers are responsible for the products they create and how they affect users. Just as an engineer who has built or designed a structure must ensure it is maintainable and safe for public use, software engineers must ensure security and safety of their programs.
He says it’s also about considerations students must have when they carry forward in their software engineering careers, such as writing code with security in mind. Another variable not always addressed during school projects is online traffic—too many visitors can crash a website. “We may not be able to simulate everything, but at least we’re making sure they’re aware and not surprised when they get into the industry.” Moshirpour’s master’s program prepares students for these challenges by providing them with advanced skills applicable to software engineering, building on their already extensive body of knowledge as engineers. This, combined with APEGA’s continuing professional development requirements, means they are continually learning and adapting with the rapidly changing industry, able to practise software engineering competently throughout their careers.
Schulich students: heroes of the programming-challenge events
Software engineering students are proving their skill set and abilities by winning programming-challenge events in which they develop an app to solve a problem, typically in a group, within a set period. In 2021 and 2022, two different teams of Schulich students won the Western Engineering Competition in programming and went on to place first in the Canadian Engineering Competition—earning them the title of reigning national champions.
Compiling a tech-hub workforce
Current industry partnership projects completed by master of engineering students as part of their degree include:
- using machine learning to determine flow in pipelines
- using machine learning to auto-diagnose heart disease in medical images
- using real-time data to analyze customer preferences
- developing smart web solutions to process charitable donations
- developing a model-building real-time analysis project
The industry partners funding the new chair position, Aucerna and Peloton Well Focused, are also giving their expertise and time, helping to generate the workforce the booming tech industry is looking for—right at home.
Moshirpour is currently a strategic adviser for the Userful board and continues to create connections in the tech industry. This expertise pairing real-life scenarios and education through his partnerships was recognized when he was awarded the 2021 D2L Innovation Award from the Society for Teaching and Learning in Higher Education.
His lab conducts research in conjunction with several different faculties at the University of Calgary, including the faculty of nursing. He also works with other universities, companies, and research organizations including Herzberg Astronomy and Astrophysics Research Centre, Userful, and Hifi Engineering.
“I think Alberta has a good shot at becoming a real tech hub. I think this is our next step forward,” he nods, explaining that the Software Engineering Program continues to grow, doubling in students each year since 2018. Moshirpour is creating a well-prepared force to support the tech boom, engineering a future-focused Alberta, one promising professional at a time.
Featured in this article
Dr. Mohammad Moshirpour, P.Eng.