What do you teach?
I am teaching courses in the general area of software engineering. The objectives of these courses are to teach students about all the activities involved in the analysis, design, development, and deployment of software systems. The key values that guide all these activities are (a) to recognize the users’ needs so that the to be develop systems may fulfill them, (b) to use the most appropriate technologies for the task, and (c) to effectively manage the resources available to the project so that the team can deliver the best possible product, on time and on budget.
Why should people learn about this?
Most aspects of our lives today involve interacting with software. We communicate with our friends and family through apps; we consume our information and entertainment online; we shop and bank through web services; we take care of our health through wearables; and we control our homes through our mobile devices. Developing high-quality software for these apps and services, software that performs its functions correctly and is easy to use while safeguarding the privacy of each user’s data, is essential to our very quality of life.
What are some of its "real-world" applications?
Everything about software is real-world! In fact, it is the means through which all of the computing-science body of knowledge is applied!
What’s the coolest thing about this subject area?
In a discipline sometimes perceived as introverted, software engineering is a fundamentally people-centric activity. On one hand, each and every software system ever built was conceived as a means to addressing someone’s problem; the stakeholders served by the system drive the process of its design and development. On the other hand, software development is a collaborative team-based activity and much of software-engineering research and teaching focuses on how to bring people together in cohesive teams and how to manage and support these teams throughout the development lifecycle.
What kinds of unique or innovative learning experiences do you offer your students? What's the value in offering students these opportunities?
My courses are project based so that my students learn “by doing”. The classroom is, in effect, a simulation of the real world; my students get to enact their professional roles and apply their knowledge and skills in the context of their project, working with external clients. This authentic yet “safe” experience gives them confidence that they can perform these same tasks in the real world, after graduation.
I also ask my students to reflect on their activities, recognize the problems they face, and understand the causes for these problems, whether they may be due to lack of technical knowledge or interpersonal differences. This kind of introspection and self-assessment is key to continuous learning and growth.
What was your favourite learning experience as an undergrad, and how do you incorporate that experience into teaching your students?
As an undergraduate, I used to organize “study parties” where several friends would gather and study together in preparation for exams. Each person would be responsible for teaching the group the material around some units, and they would also have to contribute munchies for everyone. Food made the events more social, and sharing the responsibility for the material made the studying more palatable, and the exams less stressful overall.
I encourage my students to organize themselves in teams, so that they can rely on their existing relationships to select their teammates. In the beginning of the term, I stress out how important it is to have fun “as a team” and I usually bring in students from successful teams from past terms to talk about their experience and their collaboration tips. During the term, based on the students’ reflections, I try to help the team balance the workload and alleviate interpersonal issues
What is one thing that people would be surprised to know about you?
I did my PhD thesis in artificial intelligence, exploring a computational model of reflection as a means for learning from one’s failures.