I'm Transferring to Mathematical Physics
Why I'm leaving Computer Engineering
Today I submitted a transfer form for Mathematical Physics. In this article, I'll talk about why I joined Computer Engineering in the first place and what made me decide to transfer to Mathematical Physics.
Why I chose Computer Engineering in the first place?
It has been clear that I was going to be a programmer since I entered high school. I've contributed to FreeBSD since then, and although I paused contributions from time to time due to coursework, I'm at the point now where I can call myself a FreeBSD developer.
So back in the fall of Grade 12, it was obvious that I was going to apply to computer-related programs for university. I got an acceptance letter in March 2025 from uWaterloo Computer Engineering and I gladly accepted the offer.
What's wrong with the Computer Engineering program?
The first term (1A) was fine and I didn't have any complaints back then. I found myself enjoying maths and physics courses more than engineering ones, but it wasn't a big deal. I genuinely believed that the second term (1B) would be fine as well and the Computer Engineering program was my way.
But I was wrong.
Engineering courses are boring
I mean… you can’t enjoy the program if you don’t like the courses, right?
A few weeks after the start of 1B, I was confident that I was enjoying maths and physics courses more than engineering ones. Don’t get me wrong: the professors are fine, it’s just the courses. Calculus 2, Discrete Mathematics, and Electricity and Magnetism were fine, but Electric Circuits and Digital Circuits and Systems were not. However, I like writing digital circuits in Verilog at the same time, so what’s wrong with me for disliking the digital circuits course?
The answer is that learning engineering through courses isn’t my preference. I’ve taught myself programming since Grade 6 and I am luckily at the level where I can have technical discussions with experts in this area. Because I taught myself programming through books and projects, not school or online courses, engineering has become something I learn through hands-on experience, not through academic evaluations like exams or quizzes.
Also, the Computer Engineering program covers a broad field and it involves things like electric circuit courses that I’m not interested in. I love electrodynamics but not circuits. Finding the electric field at a certain point apart from a uniform charge distribution was fun, but calculating voltage, resistance, and current was the most boring math work I’ve ever done in my life.
And when upper years told me that we don’t have “fun” courses (e.g. OS, compiler, uarch) until the third year in CS and CE, I decided not to waste two years on courses that I don’t enjoy.
The Faculty of Engineering (or the ECE department) doesn’t align with my expectation
This year I was going to be an undergraduate research assistant (URA) under a CS professor but got rejected by the ECE administration. It turns out that the Faculty of Engineering doesn’t allow first-year students to become URAs. NO EXCEPTIONS. This is funny because the CS department grants exceptions for URAs when there is an explicit agreement from the supervisors (i.e. professors). Isn’t university a place for research? Why do they gate-keep the first years from doing research? This is totally absurd.
Meanwhile, the Faculty of Engineering is very into the idea of co-op and most engineering programs here are co-op only (i.e. no regular program offered). It’s okay because students can have experience before they graduate. However, if they are aware that the current job market is bad, they should give more time to students for job hunting instead of plaguing us with a huge amount of coursework. Like other programs, full-time engineering programs have five courses per term, but they seem to forget that 1) we have to learn way more stuff (no first-year calculus course covers more than MATH 119, which is basically a crammed version of Calculus 2 and 3) and 2) our schedule is full of tutorials and labs. Many students are skipping tutorials because they need to prepare for job interviews, and no wonder they get low academic grades in quizzes and exams. Do the people who architected this program know how it feels to have an 8:30 to 16:30 class schedule every day and need to do problem sets and lab work after that? Do they even validate the feasibility of the course schedule before making it effective?
As a result, Computer Engineering has become a contradictory program that’s operated by a university but does not aim for research, and promotes co-op but does not give enough time for job search. A similar metaphor here is “le saint empire romain n’était en aucune manière ni saint, ni romain, ni empire.”
Engineering programs are expensive
Look at the uWaterloo tuition page. Engineering programs have the highest tuition, which is $19,000 per year. Computer science is at $16,000 and mathematics and science programs are at $9,000.
I would be fine if it is truly worth the cost. However, the ECE 455 lab sessions were cancelled this term because there wasn't enough budget. For your information, it is an embedded software course. An embedded software course without a lab? This doesn't make sense. Each student pays $19,000 a year for an engineering program. The faculty sold the name of E7 and changed it to PSE because they got $20M from some organization. And what? They don't have enough money for one-term lab sessions? That doesn't sound right. Even after OSAP, students spend a lot on tuition every year, and labs are still getting cancelled. Also don't forget that engineering programs are the most popular ones at uWaterloo.
So why Mathematical Physics?
I have loved watching stars since I was young, as my mum took me to observatories quite often. I liked the numbers related to stars (e.g. size comparison of famous stars) and astrophysics videos that explained things like why light bends in gravity. When I did my first high school physics course in Grade 11, I really liked it. My teacher was great at teaching it, so no way I disliked his course.
At the time I made university applications, I was in the Waterloo dream: making a huge amount of money through co-ops and continuing that after graduation. But GenAI and layoffs happened, so the dream is now hard to achieve. I made lots of connections here at Waterloo, but that wasn’t enough to justify staying in Computer Engineering. This is when I realized that I came to university for the wrong reasons. In my humble opinion, university is for learning knowledge, not for money or networking. Before, I was treating university just as a graduation certificate giver, which is completely false. It makes no sense to burn five years of tuition and living costs of around one million dollars just for a piece of paper.
On the other hand, learning physics in university makes sense to me. I’m interested in it but don’t know it quite well, so I have the passion to pursue it. Every single course that I read from the curriculum seemed to be interesting, so I can justify staying in the program for four years. Lastly, physics teaches you how to think. What’s behind the formula, why it happens, and how to play with those formulas. It’s not just plug-n-play.
What next?
First of all, it’s highly unlikely that I will work in a physics-related field after graduation. I will not pursue graduate degrees in physics either, as I believe undergraduate topics are enough to appease my curiosity for now. Yet, I might write an undergraduate thesis in graphics shaders like this.
Mathematical Physics gives nine electives, and I can always overload or take more courses in spring breaks. For ECE courses, I’m planning to take Embedded Microprocessor Systems, Computer Architecture, and Digital Hardware Systems. The rest will be pure mathematics and thesis courses for my graphics shaders idea. After I graduate, I might work in the industry or do a PhD in operating systems or microarchitecture.

