Brief introduction: Hi I’m Jarrod. I just finished up my third year at the University of Toronto Mississauga in CS. I got an internship outside of PEY and one through PEY, so I hope that this guide will help out everyone considering it or planning on taking a PEY.
In this article, I’m gonna quickly go over what PEY is, how it works, and then go into the process for applying and accepting offers. In addition, I threw in some tips about resume and interview questions.
Shout out to everyone who gave feedback on the original thread, namely TuloCantHitski and TheFourOne6ix. This post had (cumulatively) 151 upvotes!
Thanks to everyone at the UTM White Van Discord (http://discord.gg/Efr5aKkDDZ) that helped me through my own job search and gave me amazing advice ❤
We also had two podcast episodes focused on industry ft. Professor Ilir Dema & a senior level software engineer, so check those out!
— — — — — — — — — — — — — — — — — — — — — — —
(Edit: Sept. 18th 2020)
For all PEY applicants PLEASE…
APPLY EARLY AND APPLY OFTEN!!!
A lot of really qualified people I know didn’t secure PEY positions because of COVID-19 causing a hiring freeze, so please make sure you apply early and often.
— — — — — — — — — — — — — — — — — — — — — — —
What is PEY?
PEY (Professional Experience Year) is an optional, 12–16 month co-op program that students at all of the University of Toronto’s campus can do after their second year of studies. Generally, most students do so after third year as most co-op positions are looking for third year students. It is focused towards those in CS and Engineering, however there are some positions available for Business and Accounting students. Check out /u/CTJEJK ‘s experiences as a non-CS/ENG student getting a data science PEY over here.
Some companies in the PEY portal include: Oracle, Red Hat, AMD, IBM, Intel, Huawei, Kijiji, RBC, TD, Manulife, CIBC, Ontario Teachers’ Pension Plan, Environment and Climate Change Canada, ExxonMobil, Loblaws.
International students need to provide a co-op work permit and social insurance number before beginning their PEY work term.
Frequently Asked Questions
How do I do it?
You’ll register over here, and you can register in either the fall or winter term. There is no difference between the two, so I advise you to register for the fall one as you’ll be able to see more positions!
Is there a minimum GPA?
According to this link, you just need to be in good academic standing which is > 1.50.
What is my student status during PEY?
While you work full-time as a PEY Co-op student, you will retain full-time student status at the University of Toronto.
Will I need to pay incidental fees while I’m working at my PEY Co-op position?
Students pay part-time incidental fees for each of the fall and winter terms while on PEY Co-op, which ensures you have access to important University services and plans.
If I receive OSAP, will I retain my interest-free status while I’m on PEY Co-op? Do I need to let OSAP know that I’m still a student while on PEY Co-op?
Yes. To retain your interest-free status, you will need to complete the Continuation of Interest-Free Status (CIFS) form online through OSAP. It is recommended that you complete the CIFS application as early as possible.
Do I get a credit?
Well yes, but actually no. It will appear on your transcript as “PEY Co-op 500” credit/no-credit course, but not contribute anything meaningful such as being able to take less courses. For engineers, it will count towards their work hours completion requirement.
Can I take courses during PEY?
Yes, with some limitations.
- Check that the course is not core/mandatory for your POSt and is not scheduled during work hours
- Speak with your manager about taking the course, ensure your work will not be affected
- Complete the PEY course approval form
- Submit request along w/ completed form to email@example.com
Can I get a PEY job with a bad gpa/as a CS minor?
Yes! A lot of people I know have gotten great co-op experiences as a CS minor, or with a bad GPA, or both. If you’re in this situation, try to work on side projects/hackathons outside of school to make your resume stand out and practice leetcode.
Should I do 12 months or 16 months?
In my opinion, 12 months starting in May. You’ll be able to leverage your experience into a 4-month internship, or if you like it where you are you could extend the co-op by talking to your manager. /u/TuloCantHitski made a great post over here, please check it out.
What is a good hourly pay?
This really depends on your skillset and experience, but I’d say you should try to find a salary >= the median of $50 000.
Can I negotiate pay?
Of course, if you think you’re not being compensated fairly due to your experience (past internships, side projects, TAships, hackathons), then you can try to negotiate for a higher pay. Just write a polite email explaining the circumstances. (According to PEY office, the company cannot revoke the offer due to negotiation unless you were inappropriate in your email or something)
NOTE: Some companies do not budge at all. According to the PEY office, AMD and Intel have strictly set pay guidelines.
The Application Process
You will need a resume, cover letter, and your unofficial transcript (Acorn -> Academic History -> Complete Academic History -> Download as PDF).
This is not the end-all-be-all format, however it’s the one that I use. If you have a CS internship, then work experience should be above projects. Otherwise, put it under.
- Information (Name, phone number, email, github, linkedin)
- Education (Program, GPA, start date to expected graduation date, relevant coursework, scholarships/awards)
- Skills (Programming languages, tools)
- Work Experience (Job title, place of employment, length of employment, job desc points, technologies used if applicable)
- Projects (Project title, technologies used, project description, github link)
NOTE: Be careful about uploading CS assignments on Github. It is possible you will be flagged for AO.
- Campus involvement (if applicable)
- References available upon request
- Should be one-page, concise
- Descriptions should be in active voice, results oriented, such as:
Optimized SQL queries that resulted in an efficiency increase rate of 300%
- LOOK OVER YOUR RESUME CAREFULLY. Anything on there can be questioned! If you have anything that you don’t know too well, TAKE IT OFF! If you get questioned and you don’t know it well enough, the interview might be instantly donezo for you.
- Think about what your resume says about you. For example, I have done a good amount of mobile and web applications, so I was often asked why I wanted to work specifically in certain areas like C software development and backend, when I applied for those jobs.
Once again, this isn’t an exact science however I have gotten a good amount of interviews with this format.
- Description of past work (place of employment, job title, description of duties, what you learned)
- Description of projects (tech stack, what you learned)
- Conclusion with well wishes and intentions for working there
Hello, my name is [name] and I am a third-year student studying Computer Science at the University of Toronto. I am applying for the [position name] Co-op position at [place].
I am currently working at [a robotics lab] at the University of Toronto Mississauga as a programmer. My primary responsibility was to … [details omitted]. While working here, I expanded my abilities in object-oriented programming, software design methodologies, and project management.
Outside of school, I am currently working on a React web application called [ya yeet more details omitted], allowing students to [do stuff]. This project applies modern front-end design principles such as sleek animations, minimalism, and responsive design to keep the user engaged.
At [Hackathon], I worked with a team to create …, obtaining 3rd place overall. … is an Android and Arduino project designed to help users quit smoking/vaping. [Hackathon] was an excellent experience as I was able to learn new technologies such as Bluetooth and Arduino programming and the importance of taking initiative within team environments to complete the task at hand.
As a student at the University of Toronto with a cGPA of [gpa]/4, I believe that I have a strong foundation in computer science. I look forward in continuing my professional development in this area of practice. Attached you will find my resume and school transcript for my third year. Thank you for taking the time to read this, and I look forward to any future meetings to discuss the opportunity further.
If you are not getting any interviews, there is a problem with your resume or cover letter.
The interview process for various jobs differs, which could be up to 3 or 4 rounds. Some jobs are entirely onsite, half onsite half online, or entirely online. Some things you may have to do:
- HR Phone Call — They’ll just ask you questions that you normally fill out on the job application and whatnot.
- Online Coding Assessment — 2 or 3 leetcode easy/medium questions completed on an online assessment site.
- Phone/Video Interview — Same format as a normal interview, but you might have to write out code on a code sharing platform.
Congrats, you got an interview! If it’s an on-site, you’ll receive an email notification, and you’ll have to go to the PEY job portal site -> Interviews -> Click the interview for the job -> Sign up for a time slot
Interviews will normally be hosted at the Engineering Career Centre (Fields Institute, enter make a right then a left and it’ll be on your right), however they can be hosted offsite. I had an ADP interview which required me to go to their building and be buzzed in.
- Make sure you bring a copy of your resume! They will go over your resume with you, so it’s good to have this on hand to review.
- Research the company and job position.
- You should be dressed semi-formal (formal dress or suit for women, and dress/button shirt and slacks or suit +dress shoes for men). This applies even for online interviews.
- Always be courteous to anyone you talk to, such as the receptionist.
- Be attentive during the interview! Make eye contact and don’t be rude or condescending.
- There’s free snacks + juice at the ECC, so if you’re nervous try to grab a bite and take deep breaths.
Interviews usually consist of:
- Introduction from interviews and a description of what the job entails
- Ask you why you want to work there/for that specific position and what you know about their company
- Overview of your resume, asking questions about previous work experience and projects
- Soft skills questions: what would you do in X situation, name a time when Y happened and how did you react.
- 1 or 2 technical questions done on the whiteboard
- Opportunity for you to ask questions
Here are examples of questions you might get:
- Why did you choose to use [technology X]?
- What project were you most proud of during your time at [workplace]?
- What were some things that you learnt while working at [workplace]?
- Why do you wanna work for [company]?
- Give a time when you had an internal conflict in your team, and how did you resolve it?
- What should you do if you have a disagreement with your manager?
- Tell us a time when you had to work under a lot of pressure, and how you handled it.
- What is your greatest strength?
- What is your greatest weakness?
Remember, the most important part of answering technical questions is describing your thought process. While correctness does play a part, being able to articulate as you go along will matter a lot and can tell the employer how effective you’d be in a team. String questions are pretty popular in interviews, such as find the smallest word in a string, and then calculate its efficiency.
I try to do the following:
- Write out some test cases! This is a good time to make sure you understand the problem correctly with the interviewer.
- Come up with a solution asap, no matter how ugly. Can you think of a O(n^2) solution? That’s OK! Once again, this is a good way to confirm that you’re on the right track and can try to optimize it.
- Get the optimal solution. Alright — this one just takes practice, but my general procedure is to draw out the problem, see if any data structures are applicable, and think of if I’ve done something similar in leetcode/class before.
- Discuss time & space complexity.
Some questions I’ve received:
- False Coin: Let’s say we have 20 buckets containing infinite coins. Each coin weighs 1.0 g, except for the coins in one bucket, which weigh 1.1 g. Given a digital scale, how could we find which bucket contains the “false” coins with one usage of the scale?
- Recursive Staircase: Given a staircase of N steps, and we can choose to take either 1 or 2 steps, write a function that returns the total number of ways to walk up a staircase of N steps by taking 1 or 2 steps at a time.
Outputs: 1 → 1, 2 → 2, 3 → 3 (1 + 1 + 1, 1 + 2, 2 + 1)
- Happy Number: A number is called happy if, you continuously add the squares of its digits, ending up with “1”. Write a function that returns whether a number is happy or not.
Ex: 3 → 9 -> 81 → 64 + 1 → 65 → 36 + 25 → 61 → 36 + 1 → 37 → 9 + 49 → 58 → 25 + 64 → 89 →64 + 81 → 145 →1 + 16 + 25 → 42 → 16 + 4 → 20 → 4 -> 16 → 1 + 36 → 37
NOT A HAPPY NUMBER
— Some outputs: 10 -> Yes 3 -> No
- Find smallest number not in list — Given a list of integers, return the smallest positive number greater than 0 that is not in the list.
Some outputs: [2, 3, 4] -> 1 [1, 2, 3, 5, 6] -> 4, [1, 2, 3, 4, 5, 6] -> 7, [-99, -1] -> 1
- Greatest number after inserting 5: Given an integer N, return an integer such that we insert a 5 into the number producing the greatest value.
Some outputs: 100 -> 5100, 9827 -> 98527, -999 -> -5999
- Palindrome??: Given a string consisting of lowercase letters and question marks, return the palindrome if that string can be turned into a palin rome by changing the question marks into lowercase letters, and “NO” if it cannot be.
Some outputs: “a??a” -> “aaaa”, “aB?a” -> “NO” (must be lowercase), “ra?ec??” -“ “”acecar”
- Buy And Sell Stock: Given an array for which the ith element of the array is the price of a stock on day i, return the days in which buying and selling would produce the greatest profit.
Some outputs: [7,1,5,3,6,4] -> (1, 4), [7,6,4,3,1] -> NULL, [11, 2, 5, 7, 3, 8] -> (1, 5)
- Do leetcode! Start out from the easy difficult top interview questions, and work your way up to medium!
- Write it out on paper
- Do mock interviews with friends
Lastly, the recruiter will ask you if you have any questions. Always have some on hand, since interviews are a two-way street. You wanna know whether you would like to there or not as much as they want to see if you’re a good candidate.
Here’s some questions that I ask the interviewers.
- What do you do in a normal day?
- What is the biggest challenge you have had to overcome while working at X?
- What is a bug/feature you are most proud of while working at X?
That’s everything I have, please let me know if I missed anything or can add anything. I hope this helps you guys decide whether PEY is right for you/land a PEY job!
Remember, persistence is key! I’ve applied to around 100+ places including internships and PEY, got 15 interviews and 2 offers, just keep at it!
Feel free to email or PM me if you wanna talk about my experiences further!