Information for Prospective Graduate Students

Table of Contents

  1. Before Contacting Me
  2. Contacting Me
  3. Things to Avoid [i.e., How to Guarantee that Your Application is Ignored]
  4. Formally Applying for Admission
  5. Co-op Option for Graduate Studies
  6. Other Useful Information
  7. Information on C++ and Programming


Thank you for your interest in my research program. If you are considering applying to study under my supervision, please read carefully all of the information in this document.

I am currently looking for new graduate students to supervise. Applicants should have:

Knowledge of the C++ programming language would be extremely helpful, but is not strictly required.

My research interests are quite broad. There is, however, one unifying theme behind all of my work, namely, a strong interest in the implementation of ideas/techniques/methods in software. For this reason, applicants should have a strong interest in programming and also have flexibility in terms of the particular area of their research project (since I work in a number of different areas). The one thing that I can guarantee is that your programming and software-development skills will improve very substantially as a result of working in my research group, due to the nature of the research projects undertaken in my group.

Before Contacting Me

Information about my research can be found in the Research section of my web site. I would recommend that you look at some of the recent publications from my research group in order to understand the type of projects that are done in this group. A complete list of the publications from my research group can be found in the Publications section of my web site. All of the projects undertaken in my group have a very strong software component. Therefore, it is critically important that applicants enjoy programming and have strong programming skills. The programming language used in my group is most typically C++. Extensive information on C++ and programming are available through the links provided in the Information on C++ and Programming section.

Contacting Me

If you would like to study under my supervision (and you have read the Before Contacting Me section), please contact me by email. My email address can be found in the Contact Information section of my web site. If you contact me before formally applying for admission, I can provide an initial assessment of your suitability for my research group before you apply. When you write to me, please use a subject-line for the email that is something like "Requesting Supervisor for XXX Program", where "XXX" is the program of study of interest to you (i.e., M.A.Sc., Ph.D., or M.Eng.). This will allow your email to be processed more quickly. Please ensure that you include all of the following information in your email:

  1. a clear indication of whether or not you require financial support for your studies
  2. an indication of the program to which you would like to apply (e.g., M.A.Sc., Ph.D., or project-based M.Eng.); if you are interested in a Master's program, please make clear whether you are interested in:
    1. only the M.A.Sc. program
    2. only the project-based M.Eng. program
    3. either the project-based M.Eng program or M.A.Sc. program, whichever is deemed more suitable for the candidate
  3. an indication of when you would like to begin your studies (e.g., January, May, or September).
  4. if you are interested in a Master's program (i.e., M.A.Sc. or M.Eng.): an indication of whether you would like to participate in the Co-op Option
  5. an indication of whether or not you have already applied for admission in the department; if you have applied, please include your student number (if known)
  6. an up-to-date curriculum vitae (CV), including a list of any publications
  7. a copy of all of your university transcripts (in English, unofficial copies are fine)
  8. if English is not your native language: a copy of a recent TOEFL or IELTS score report
  9. a copy of a recent GRE score report, if you have one
  10. a detailed description of your computer-programming and software-development background, including (but not limited to) the extent of your knowledge in the following areas:
    • C++ programming language (e.g., what language features have you used and to what extent, what standard library features have you used and to what extent, etc.)
    • C programming language
    • data structures and algorithms
    • Linux operating system
    • software build tools (such as Make or CMake)
    • version control systems (such as Git or Subversion)
    Note: Do not simply say things like "I am proficient in C++" or "I have a beginner's knowledge of Linux". Words like "proficient", "beginner", "intermediate", or "advanced" are not in any way helpful, since they are extremely vague and open to interpretation. Instead, state in specific terms what you do know and how you have applied that knowledge in practice.
  11. a detailed description of the most challenging programming project that you have undertaken individually (i.e., on your own); be sure to provide the following information as well as any other details that you believe would be helpful:
    1. What does the software that you developed do?
    2. Which programming language was used for implementation?
    3. How large was the source code for the project in terms of lines of code (excluding comments)?
    4. How long did it take for you to complete the project?
    5. What aspect of the project did you find most challenging?
  12. an example of source code for a project that you have written yourself (i.e., not as part of a team) and well demonstrates your programming abilities; the code should be written in C++; if the source code for the project is available in a publically accessible Git repository (on a web site such GitHub or GitLab), please provide the URL of the Git repository instead of trying to send source code directly in email attachments

Please ensure that your name appears in each of the documents that you provide. It is strongly preferred that documents be provided in PDF format (or plain ASCII text format). Avoid using Word and HTML formats if possible. Lastly, be sure to provide all of the information listed above. Not including all of the requested information may result in your application being discarded without further consideration.

Things to Avoid

The following things are almost guaranteed to result in me ignoring your application and/or emails:

I receive email from many individuals regarding graduate studies under my supervision. If I am interested in supervising you, I will respond to your email. Depending on my workload, this could take a couple of weeks. So, please be patient. (Patience is a virtue.)

Formally Applying for Admission

The application process for new students can be completed online. For more details, see the Graduate Students and Records web site.

Co-op Option for Graduate Studies

The Co-op Option provides a graduate student with the opportunity to gain real-world work experience, while also earning some extra money that can be used to help partially offset the cost of the student's studies. With the Co-op Option, perhaps, you might be able to earn enough money to support yourself for the duration of your studies. Please note that it is your responsibility to ensure that you will have sufficient funds to complete your studies, since the Co-op Option will only partially cover your tutition and living expenses. You can contact the Co-op Office for guidance in determining whether the Co-op Option is sufficient for your financial needs. For more information on the Co-op Option for graduate studies, please refer to the following:

Other Useful Information

Some information regarding the cost of tuition and other expenses can be found at:

Information on C++ and Programming

Some reference materials on C++ and programming that may be helpful include:

  1. Programming in C++ — The C++ Language, Libraries, Tools, and Other Topics
  2. Virtual Machine Disk Images for C++ Development Environment
  3. Lecture Videos for SENG 475 [Advanced Programming Techniques for Robust Efficient Computing (With C++)]
  4. C++ Lecture Videos