Dr. Herbert H. Tsang, PEng
CMPT 275: Software Engineering I
Software Engineering I is an introductory course in software engineering techniques that explores both the software development process and software project management. It is a required four-credit, 200-level course for all SFU computing science students who wish to join the computing science co-op program. The maximum enrolment is 75 students, and there are typically 10 to 15 students on the wait list. The course runs three times a year—in fall and spring at the Burnaby campus and in summer at the downtown Harbour Centre campus. The video above explains more about how the course works.
The Experiential Learning Components
The course centres on a team-based software development project in which students design and develop a working prototype of an iPhone application. The students are exposed to commonly used software engineering techniques that are used in the software development process and software project management. The project design process uses the use-case approach to drive requirements-gathering, object-oriented analysis, user documentation and design phases. The project also includes implementation and testing phases, and release and maintenance phases are discussed. Throughout the course, issues related to software project planning, quality assurance, configuration management and management of people are examined.
It is my goal to organize the student project teams according to the structure of real-world software teams. I therefore assign team members randomly into groups. The results in terms of team dynamics have been mixed. On the one hand, some student groups work so well together that their end products have been released to the Apple Apps store. On the other hand, some groups experience difficulties including lack of technical skills, leadership problems, problems with inter-group communication and personality issues. Nonetheless, it is wonderful to see that even when students experience these difficulties, they are usually able to find a way to work together and successfully complete their projects by the end of the semester. I believe it is exactly these experiences that will help to carry the students forward into their future careers.
To keep the class interesting, each semester we select a different focus or theme for the application to be developed. Past themes have included computing accessibility, informational portals, distance and mobile education and community policing applications.
As an example, for the computing accessibility theme students investigated designs and prototypes for iPhone or iPad applications to address visual impairments, dexterity impairments, hearing impairments, cognitive impairments and learning disabilities. We called the theme “One Size Doesn’t Fit All.” Students were required to conduct background research to assess the needs of computer users with a wide variety of limitations. Students would frequently come and tell me that they had a sibling or relative in mind as the user when they were designing for such an application. They were excited and motivated to use what they learned to benefit the people around them.
During the course of the semester, the students deliver an initial project plan that specifies the vision and scope of the project. Then they gather information to create the system requirement specifications, design documents and quality assurance plan. These documents are continuously updated during the semester as students learn more about their projects and incorporate any changes. Throughout the term, students must interact with customers to determine which functionalities need to be delivered as a working prototype at each of three successive stages of product development. At the third stage, students give a presentation in class to demonstrate the working prototype that they have developed. Our sponsors/customers are invited to attend this presentation. The final stage includes a public presentation at which sponsors take part in selecting the top three projects. In some semesters the top teams have received prizes.
In another case, students worked in cross-functional design teams and competed in a panel-judged SFU Innovation Competition for $1,000 in prize money. As a special bonus, the winners became honorary members of SFU’s Technology, Innovation, Marketing and Entrepreneurship (TIME) Centre, where they received further mentorship training and guidance to help them grow their innovations into real ventures.
In addition to connecting students with customers and sponsors, I tried to connect them with professionals in the software engineering industry through activities that included bringing guest speakers to the class. Speakers have included Stewart Butterfield, the Canadian-born entrepreneur and co-founder of the photo-sharing website Flickr; Milun Tesovic, founder of the online music website Metrolyrics; the senior manager of the retail chain Sage; former SFU students who have become entrepreneurs of successful startup companies; and a sergeant from the Vancouver Police Department’s Community Policing Services Unit. Students were generally excited to meet these professionals—they were engaged and they asked excellent questions during these sessions. I think it’s important for students to see the possible pathways they can take after this class and after graduation. I hope this exposure will spark their imaginations and motivate them to advance their careers as software engineers.
Unlike projects or assignments that are just exercises, real-life settings and real customers offer the complexities that encourage deeper learning to occur. A supportive environment is required for students to produce high-quality projects that address a real need. In the team projects, students were more reflective than they had been in prior courses. The additional elements meant that the endeavour was no longer just another programming project. The stakeholders for the projects included members from different backgrounds with different objectives and needs that forced students to rethink the rationale of not only their overall applications, but of each deliverable along the way. Hence, in a limited way, the students were able to experience the multifaceted joys and anxieties that they will eventually face in a real-world software development project.
Dr. Herbert H. Tsang, PEng, Adjunct Professor, School of Interactive Arts and Technology, Simon Fraser University, herbert@HerbertTsang.org