Summer Opportunities (Bachelors)

General Information

Summer internships for bachelor students are supported in one of three ways: Mitacs Globalink, PURE, or NSERC undergraduate research award. Some positions may only be available for certain awards; you should familiarize yourself with the deadlines and eligibility of the award program before contacting me.


If the position is provided through Mitacs funding, you should not contact me, but should apply directly through Mitacs and indicate the project as an area of interest. For PURE and NSERC awards, you will need supervisor support for the application, and you should express your interest as soon as possible, but no later than the date specified. After reviewing the general requirements above, you can express interest in a position listed below by contacting me at my university email address. If you are expecting to be funded through Mitacs, you should not approach me directly but should apply via the Mitacs program. Your mail should:
  1. Specify which position you are interested in, and
  2. Include a brief letter of intent stating why you are interested in the position and your qualifications.

Current Openings

Reviewing literature about component-based development

PURE or NSERC (our deadline: 20 January, 2023)

We aim to improve current practices in component-based development. The purpose of this research is to develop new techniques for making the right decision when selecting components in a software development activity. To enhance the current techniques and even invent new ones in component selection we need to conduct a systematic literature review, so we don't have to reinvent the wheel. In this phase of our research, you will help us in reviewing, summarizing, and recording related academic literature related to component-based development.

The applicant should have some understanding of software development, and ideally contributed to a project in any capacity as a software developer. The applicant should have experience of, or an interest in, reading and summarizing academic papers in software engineering. The student will follow a protocol for searching, recording, and summarizing academic papers related to the research topic.

Qualitative analysis and processing of a dataset for NLP

PURE or NSERC (our deadline: 20 January, 2023)

Requirements Engineering (RE) is a critical process in software development that entails analyzing massive amounts of unstructured qualitative data (interviews, documents, observational notes, etc.). The quality and thoroughness of the requirements analysis process led to the creation of valuable services, products, and projects. To systematically analyze such a huge amount of qualitative data, Qualitative Data Analysis (QDA) methods can be used to develop models (UML, Meta, or ER-diagram) of greater quality than might be achieved without a formal analysis process. Even though the coding system can help with requirement analysis by extracting key terms (entities and their relationships in a domain model or ER diagram) and automatically creating traces (links between requirements and where they came from), good coding, like requirements engineering, is both an art and a science, and mastering it takes years of practice and training. Also, coding can take a lot of time and be boring. When working with a lot of data, it can be impossible or too expensive to do.

To address the aforementioned issues, our research project seeks to use advanced NLP-based techniques to automate the QDA-based RE coding process. The proposed solution would take unstructured data in the form of text (interviews, papers, field notes, etc.) as input, preprocess it, and feed it to an NLP-based model, which would use the data to build efficient codes faster and with less human effort. However, there are no publicly accessible datasets for this task, which led to the following research questions: (1) How to code the existing publicly available requirements engineering datasets? (2) Does pre-processing data aid in obtaining correct results? (3) What amount of data pre-processing and coding is required to achieve satisfactory results? (4) How much does it cost to code an existing dataset (both in terms of human work and computing cost)?

The applicant should have some understanding of the Python language and Data Analysis libraries such as NumPy, Pandas, Seaborn, and Matplotlib. Also, the applicant should have experience in, or interest in, Machine/Deep learning and Natural Language Processing (NLP), and requirements engineering. The student will analyze the existing dataset and help qualitatively code and preprocess the existing dataset. A precondition for analysis will be gaining familiarity with the relevant literature and appropriate software.

Research Opportunities (Masters and PhD)

General Information

Positions listed are for a thesis-based masters of Electrical and Computer Engineering with a specialization in software engineering (MSc) as part of the Schulich school of Engineering graduate program (2 years), or for a doctor of philosophy (PhD) (4 years) at the University of Calgary.

There are two parts to the admissions process. First, an applicant must meet the requirements for graduate studies specified by the university, as well as the requirements for admission to the Electrical and Computer Engineering program. I cannot waive these requirements and am unable to accept applicants who do not meet them. Second, an applicant must obtain a supervisor. It is not necessary to complete an application before expressing interest to a supervisor, but it is helpful to review the requirements in order to ensure that you are prepared. Information about applying to me as a supervisor is given in the next section.

All positions are offered with a stipend, but graduate students may wish to look at increasing funding through scholarships and grants.

For more information about the graduate program, funding, or the university, please contact the graduate admissions coordinator, whose contact details can be found by reading the pages linked to above.


After reviewing the general requirements above, you can express interest in a position listed below by contacting me at my university email address. Your mail should:

  1. Specify which position you are interested in,
  2. State your earliest possible start date,
  3. Give a brief statement about what interests you about the research topic (letter of intent), and
  4. Include a CV.

If you are not applying for a specific posted position, but wish to express interest about possible future openings, I recommend sending a letter of intent. A good letter of intent will mention my research areas which interest you, and explain how your previous work aligns with the topic(s). I receive many emails expressing general intent, but the majority of them appear to be mass emails (spam) because they focus on the accomplishments of the author (usually quite unrelated to my research topics) and are very general about my research (using titles of papers, rather than displaying any understanding of the topic). I will always try to answer genuine emails, so invest a little time to ensure that your email is perceived as intended.

Current Openings

There are currently no funded openings in my research group. Please check again later.