By The Numbers - My Time At the University of Waterloo

30 Jun 2018

To commemorate my recent graduation from the University of Waterloo, like most grads, I decided to take a look back. However, I decided to try something a bit different. Seeing as I graduated with a degree in Computer Engineering, I decided to throw some code and data analysis into the mix, to really see what I learned over the past few years.

I started by gathering roughly a gigabyte of data from all the online services I've used over the years - banks, Google, Netflix and even from the University of Waterloo - my emails, transcripts and various other academic records.

I dumped all this into a database, wrote some code and came up with some interesting graphs. Without further ado, let's take a look at what I found.

One quick note: this analysis is not particularly rigorous, nor am I making any claims about causation. I'm going to show some interesting correlations and try to explain, to the best of my ability, why they occurred.


Time At Waterloo

A co-op degree at UWaterloo consists of 8 academic terms and 6 co-op terms. That's a grand total of 1688 days, which is approximately 4.5 years.

A common misconception at Waterloo is the idea you have no days off - you're either studying or on a co-op term. The data, however, tells a different story. While I did spent most of my time working and at school, I did have approximately 40 days a year off.

Hours Per Week

To fulfill my degree requirements, I took 52 courses which amounted to 2415 hours of scheduled class time.

Average academic hours peaked at 30 hours/week during the notorious ECE 2A, after which they generally decreased. The composition of academic hours has roughly stayed the same throughout my undergrad career, with the exception of tutorials becoming less significant in my upper years.


My GPA has fluctuated, but generally trended upward towards the end of my degree. I suspect this is due to a few things, including getting acclimatized the the university experience and the variety of interesting technical courses in the upper years.

Of course, strategically selecting some easier electives helped.


Attendance has been on a general decline since I started (with the exception of some classes with mandatory attendance skewing the numbers). My class attendance also varied across the week, but most noticeably dropped off on Mondays and Fridays 🤔


It's no secret - coffee is partially responsible for getting me through my university career. It's also no secret - Mondays suck. That's a possible explanation for the 30% increase in coffee purchases on Mondays.


It's accepted that the more you progress in your program, the more interviews you will get - this is reflected in my data, with one exception. The dip for my second term was me embracing the notorious UWaterloo 'Cali-or-Bust' attitude, where I exclusively applied for California internships.

Zero interviews for Internship #6 as I returned to a previous employer.

Curious Correlations

I pulled together all the data I gathered into a correlation matrix to visually identify strong relationships. I then used this to plot some interesting correlations below.

Netflix & GPA

Hypothesis: As I figured out how to study more effectively, I had more time to devote to other pursuits - Neflix being a big one.

Co-op Interviews & GPA

Possibly the most interesting correlation - the number of interviews in a term had a strong negative correlation with my GPA. This is understandable though, as co-op interviews occur around midterm season and usually end up conflicting with lectures.

The Big Picture

I plotted some of the strongest trends together to give more comprehensive look at the past few years:

There was a lot more to my university experience that this graph, nor any data, does not capture - the adventures I had, the friends I met and the memories I made.

However, if I could plot my stress levels, they would look a lot like this graph - they'd start low, peak at semester 5 and drop off afterwards. Semester 5 was an inflection point, representing peak caffeine consumption, a low GPA and tons of hours sunk into interview prep. In spite of that, it was also where I figured out how the whole university thing worked.

And that's my takeaway - to future and current students, Waterloo or otherwise, you will figure things out. You will figure out how you study effectively, how to land interviews and how to schedule everything so you have some free time. Things get better; trust the process.

Sure, I recognize all of this is with a sample size of one. But just looking at my classmates and friends, I am confident that the majority would agree.

Thank You!

Thanks for taking the time to read this! This project was the results of many hours of work doing what I'm quite passionate about - wrangling and visualizing data.


This code for this project was structured as a simple ETL (Extract-Transfer-Load) Data Pipeline. It processed my data and loaded it into a SQL database, after which I queried it and generated these graphs.

Analysis and visualization were performed using several of my favourite Python Data Science tools, including: Jupyter Notebook, pandas, matplotlib and seaborn.

You can check out the source code on GitHub.


This project was inspired by several other student efforts at UWaterloo, including the Systems Design Engineering 2017 and Software Engineering 2018 Class Profiles.