uWaterloo Voice
Published in

uWaterloo Voice

My Thorough Tale of Trekking Through an Online UW Software Engineering 1A Term

My SE Posts Term-by-term: 1A1B

Briefing Note: I want to stress that this post is written only from my experiences — everyone has a different one!

Also, this is the first time in over six months that I’ve used an alliteration 😛


You know, I was really looking forward to the in-person university experience.

I was intrigued by the ideas of living away from home, meeting new people, and even learning more advanced subjects compared to high school. I love new challenges, and software engineering was going to be the biggest one of my life.

However, with the global pandemic going on, that first point was cancelled, the second one was stinted (but not stopped), and the third… well, I’ll get to that.

Luckily, I did get quite a challenge and an interesting learning experience.

Just not the one I expected.

This post covers my thoughts on the SE courses for 1A, as well as things I figured out that helped with my mental and academics during the online term.

About Me

Hi, my name is Hannah. Before coming to Waterloo, I attended a high school in Mississauga you’ve likely never heard of, without any AP, IB or any special courses. (i.e. no integrals 😞). I had a decent amount of programming experience, having done CS courses, jobs, hackathons and side projects before post-secondary.


And I spent my entire SE 1A term learning remotely from my home in Mississauga.

Choosing SE over CS

I was accepted to both CS and SE at Waterloo. After talking with many upper-year SE and CS students, I chose SE for two main reasons.

The Cohort

Think middle school where you roamed between classes with the same group of people. The cohort works sort of like this, but with 150 people and in a university. Every upper-year I messaged mentioned how great the cohort was for meeting new people, and after the first term, I have to agree.

This structure makes meeting new people much easier since we all had the same courses for 1A (and we will also have the same courses for 1B). It works even in the virtual environment since we have platforms like Discord and Messenger to keep connected.

Engineering + Math

I actively did FRC in high school, so though my passion was with code, I loved engineering too. SE is part of both engineering and math faculties, so I thought that was kind of neat.

It is also apparently much easier to switch from SE → CS than CS → SE, which is quite nice. There’s a Google Doc by Raymond Li that describes the differences between CS and SE much better than I ever could, so I’ll link it here.

So far, I’m happy with my choice 😁

Course Reflections

If you’re not interested in learning about my thoughts on each SE course, you can scroll past this bit. I… wrote a lot.

CS137 (Programming Principles)

Most, if not all, SE students are interested in programming, and I was no exception. CS137 is a course specifically for SE students, so no other program takes it. We learn C, which took some getting used to since I had only worked with Java, JavaScript and Python in the past.

I’m never taking variable-length arrays for granted again.

Reading the lecture notes (and trying out a few practice problems) was all I needed to get a good mark. The content required to solve the assignments is all there. It was one of my favourite courses, likely since I loved code already.

I ran into this one week while checking for memory leaks. Don’t worry. I fixed my program.

ECE105 (Classic Mechanics)

I loved physics in high school. My teacher was super passionate about what he taught, which made the course really fun. Our ECE105 instructor, Professor Mansour, was also very passionate about teaching.

However, the questions and concepts on the quizzes and term tests were… on another plane compared to high school.

Only about half of the university course covered high-school concepts. Even though units such as rotational kinematics were definitely not my thing, it was still fascinating to learn about. The other good news was that the assignment problems were of similar difficulty, so I wasn’t completely lost. Plus, TA and instructor office hours/tutorials were quite useful to further my understanding.

The online experience for ECE105 was the worst out of all my courses since it had the most technical issues. Textbooks codes at the beginning of the semester kept running into issues and at one point, our instructors spent hours trying to get the assessment site working after it went down. Luckily, shortly after our first term test, we completely swapped the platform we used for quizzes and didn’t run into as many problems.

Notably, there were also many unclear questions on the quizzes, but since the instructors were open to our feedback, this improved as the course went on.

Despite the bumps, the thing I appreciated in ECE105 the most was the Messenger group chat Professor Mansour organized with our class. It made communication with him easy, which I felt was especially lovely in the isolated, online environment.

MATH115 (Linear Algebra for Engineering)

I found this course was the most fun, mainly because it’s almost entirely new concepts (except for the tiniest bit of high school vectors). Furthermore, the lecture notes and practice problems were all I needed to complete the assignment (same difficulty, same concepts), which was a breath of fresh air after the two more challenging math courses.

I didn’t attend office hours very often, but I did sometimes listen to the audio recordings. Also, our instructor had a cute cat. I think this might have influenced the second question on our first assignment, which was to draw a cat:

My friends were confused about the striped tail. I was too lazy to draw the rest of the stripes on the body.

P.S. Watching some of 3Blue1Brown’s videos was a nice follow-up to the instructor’s pre-recorded videos and notes.

MATH117 (Calculus 1 for Engineering)

The great thing about MATH117 is that it starts from the ground up. We began with functions, then moved on to concepts like derivatives (still relatively easy) and then integrals. I found myself breezing through the content until we got to integrals, which is when I started struggling with more complex questions.

Thanks to Sophie who sent this. I almost made it my phone wallpaper.

Luckily, there were also many resources for MATH117, including course notes (that were mandatory to purchase since they included an access key for an assignment platform), two “textbooks,” and a weekly video recorded by the instructor.

Needless to say, I had a lot of tabs open.

MATH135 (Algebra for Honours Mathematics)

Similar to MATH115, there’s nothing like MATH135 in high school.

Using the relatively simple fundamental theorems given, we had to prove statements like if X, then Y. The course starts with more basic concepts like divisibility and even/odd numbers but works its way up to more advanced things like linear congruences. There’s a lot of logic involved.

Out of all the courses, this course required the most brainpower for me. Either I would solve the problem in a couple of minutes or a couple of hours.

The course notes were my best friend; they were very well-compiled and detailed. I always had them open while working on assignments. Office hours were also advantageous since we occasionally got tips on how to approach tougher assignment problems from the TAs.

A nice bonus for SE students was that there were some proof questions in MATH115 where MATH135 knowledge can be carried over.

Among Us players, I posted this to Reddit, but it got lost so: ∃ 🔪∈ ඞ

(TIL ඞ is the Sinhalese character for a ‘ṅa’ sound.)

SE101 (Introduction to Software Engineering)

I’m not sure how this course is run in-person, but online it consisted of weekly activities. However, the term-long team software engineering project was the same as in-person, just virtual.

Weekly Online Activities

Most of these were in teams that were randomly assigned by our instructor. An assignment and a list of teams would be posted, and we would have a week to submit. This meant we had to coordinate a common meeting time with about six other people using the class-wide Microsoft Teams chat. Most of us used LettuceMeet to do this.

These activities were pretty straightforward. We tested a few FYPDs (fourth-year engineering projects) though most of the assignments were either a “get to know your group” or “answer these questions together.” Nothing took longer than an hour to complete.

Sure, the calls could sometimes be a bit awkward since we were all thrown together for one assignment, most of the time without proper introductions. However, I did get to have some nice conversations with a couple of classmates and got to recognize some faces. Hopefully, I’ll meet everyone on campus one day.

Term-Long Team Software Engineering Project

After finding a team of four other students and coming up with a name (The Rick Labs best team), my team and I were ready to start our project. The only requirement was that we had to have a hardware component and a software component. This meant we had to purchase some of the hardware ourselves since our hardware guy only had access to an Arduino initially.

We had two check-ins before the final submission (a proposal, then a prototype), as well as a weekly check-in meeting with our group’s TA. Other than that, though, we could work on the project whenever we wanted. The flexibility of the project meant we could build anything we wanted.

It was fun getting to know and work with a group of people I had barely talked to before to build something cool. It was kind of like a hackathon, but over three months and with more planning (yes, we had a Gantt chart).

Overall, this was by far the easiest course. All it involved was showing up to a couple of calls and completing the software engineering project. SE101 is a graded course (not a credit/no credit), so although it’s only worth a half-credit, it does count towards GPA and is a nice boost.

Takeaways from this Term

Of course, as a student who has only completed 1A, my tips are not based on lots of experience. But I wanted to write down things that I would tell my younger self if I were to retake the term under the same circumstances. Also, as a reminder to myself as I take on SE 1B in a few days.

💖 Find things that give you joy.

Online learning can be rather depressing at times. I was in my room for hours on end, either watching lecture videos, reading notes, taking notes or doing assignments. Though I had far less free time than in high school, it was still possible to make time for myself.

I found things I enjoyed and spent my free time there. My main hobbies were simple things like reading, video games and taking long walks outside (safely, of course).

I also got a job as an instructor virtually teaching kids how to code, and teaching them reminded me of when I first started coding 😊

🚦 A pass is a pass is a pass is a pass. It means what it means.

i.e. You passed. You’re done.

I can remember the lowest grade I ever got before coming to university. It was on an English reflection paper in fourth grade about The Dot. I got a 2+/3-, which is equivalent to around 67%.

I got a 37.5% on my first ECE105 quiz on kinematics.

Having a failure so early on helped me accept that, despite my best efforts, I was likely going to fail some assessments. However, failing a quiz/assignment and (in some cases, depending on the course requirements) a term test was not a complete catastrophe.

Of course, I aimed for a high grade, but I didn’t dwell too long on failures. I spent more time on concepts I struggled with.

(Thanks to this strategy, I ended up getting a higher passing mark on every ECE105 quiz compared to the first one, despite the concepts getting more complicated. Also, the quiz structure improved, which helped.)

Many SE students are used to getting high marks, myself included. But in first-year SE, though I have heard that marks can somewhat impact co-op opportunities, there’s really no difference between 95% and 96%. Or 72% and 74%. There is no admissions curve where dropping 2% can drop your acceptance odds by 20%. Apparently, grades matter even less for later co-op terms as work experience becomes more critical.

To summarize, I never let one bad grade absolutely destroy my mental. It wasn’t the end of the world, and there was always room for improvement.

🖩 Calculate your grade.

Course mark breakdowns are given at the beginning of each course, so although it’s a bit time consuming, I think it’s worth it to set up a spreadsheet with a mark breakdown.

My spreadsheet was structured to assume that I would get 0% on every assignment that I didn’t know the mark of. Essentially, I calculated my minimum mark (if I were to do no work for the rest of the semester, not including requirements like passing the final). I felt this was better than predicting I would get 100% on every assignment I didn’t know the mark of.

Although I would start at 0%, my mark would never go “down”, no matter how badly I did. It could only go up. 😎

Towards the end of the term, this was particularly useful since I realized I could get away with not finishing some assignments. For one of my courses, the difference between doing and not doing an assignment could be a 0.2% increase at best (getting 100%) and a 0% at worst. I didn’t do that assignment.

Of course, I still worked through them to understand the content, just a few days later than the assignment was due (during my exam prep). I would spend this extra time on assignments that would significantly impact my mark for another course.

For example, I was happy where my MATH 135 mark was after the ninth assignment, so I only did half the tenth one (hence the low mark).

The MATH135 Section of my Spreadsheet

I was also able to figure out the minimum grade I needed on an assignment or test to achieve a particular grade. For example, I knew that I would need a 50% final if I wanted to get an overall 85%. Although I aimed for 100%, I liked knowing that even if I didn’t get 100%, all I needed was 50% to get an 85%. (As it happens, I did end up getting higher than a 50% on the final)

Overall this strategy helped my mental throughout the term. I recommended this to a couple of other friends, and they also said it helped their mental too.

💬 Talk to other people.

One of the things that helped me get through this term was talking to other people. I didn’t just talk to other Software Engineering students, but also my friends at different universities.

Many of them are studying completely different subjects, and I found it refreshing to hear about neat courses that I’m not taking, like psychology.

We all shared our struggles and encouraged each other and frequently hopped on voice/video calls. Overall, it made me feel much less alone. 😊

🔗 Connect with Upper-Years.

Through RTC, I was connected with an upper-year mentor (Alex ❤) back in June 2020, which was the summer before I started university. I completely forgot I signed up for the mentorship until I got an email notification, and I thank my past self for doing so.

Getting to talk to an upper-year definitely helped me prepare for life in university. During our monthly calls, we talked about academic things like course-load and co-op, but also things like extracurriculars and moving out for the first time.

Some upper-year SE students also created a podcast cast called Sessions by SE (Spotify, Apple Podcasts… this isn’t meant to be an advertisement; I just really like the podcast). I listened to it on some of my long walks, and I loved hearing their insight and tips. I recommend the episode on being a first-year since that was my favourite.

Overall, I really appreciate how open upper-years are to talking with first-years! They definitely made the transition to university much easier.

📅 Make a schedule

Course schedules are released at the beginning of the term, meaning I could add every assignment, quiz and office hour all at once. I used a combination of Todoist and Google Calendar, though I know many people also use Notion.

This helped me organize when I would work on assignments, as well as specifying break times. I never (unintentionally) missed an assignment due date.

🖥️ Get a second monitor.

Halfway through the online semester, I realized I needed a second monitor. Switching between tabs on my laptop screen wasn’t working.

This was one of the best purchases of my life. Working on two monitors is just so much more productive. Often, I would have the course notes open on one screen and the assignment on the other.

I don’t think I’ll ever be able to go back to a single monitor setup.

(Waterloo’s Academic Readiness Bursary helped me cover the cost.)

👍 Be a good person

I only saw this twice the whole term (almost every SE student I’ve spoken with has been lovely), but I want to include it as a point anyway because I think it’s really important.

It’s not okay to make fun of other people for getting a low grade, or for missing an easy question, or for thinking an easy question is tricky.

Don’t put others down to make yourself feel better.


Overall, I’m happy I chose to attend Waterloo for Software Engineering. Though it’s tough that things are all online, I am enjoying the program so far, and I’ve met a lot of really cool people that I can’t wait to meet in-person!

I’m open to talking with anyone who has questions about this post! I don’t know if there’s some sort of direct contact on Medium, but feel free to connect with me on LinkedIn!

If you made it down my unintentionally (like I was writing this originally on Google Docs, and then I saw the page count was 11 so… oops) long read, thanks for reading, and have an amazing 2021 ❣

P.S. I want a cool cover image for this post and since I don’t really know how Medium works, here’s one of my favourite comics from System32Comics.




uWaterloo Voice is an unofficial student run publication aiming to showcase articles created by University of Waterloo students. These articles can be of any topic and anybody from the University of Waterloo is able to write for this publication.

Recommended from Medium


Amazon Athena — A "sneak peak"

Elgato Stream Deck Mini REVIEW

Building a Taxi app in the open — Part 1

🎮 How to Fix Steam Error “VAC Was Unable to Verify Your Game Session.” 🖥️

How to Build and Test your Unity Game

Adapting Agile to Build Products with Low-Code: Tips and Tricks

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Hannah Guo

Hannah Guo

Software Engineering @UW who likes coding, reading, and occasionally, writing. https://hannahguo.me/

More from Medium

FX risk 101: How to deal with it?

Network Address Translation or NAT

Top tips for running Hack days