The Hitchhiker’s Guide to Waterloo SE — Chapter 1A

Yash Arora
uWaterloo Voice
Published in
7 min readJan 12, 2020

“Far out in the uncharted backwaters of the unfashionable end of the Western Spiral arm of the Galaxy lies a small unregarded yellow sun. Orbiting this at a distance of roughly ninety-eight million miles is an utterly insignificant little blue-green planet whose ape-descended life forms are so amazingly primitive that they still think digital watches are a pretty neat idea.”

However, despite their primitive nature and insignificance, many reach for success, pursuing their education at some of the most renowned universities around the globe. Not everyone is smart enough to get into Harvard, MIT, or Stanford though. Some go insane, begin worshipping geese, and about 130 of them once ended up in a nice little program called Software Engineering at the University of Waterloo. If that’s you, you’ve come to the right place. It’s easy to get lost, but we’ll always be here to show you around. Welcome to the jungle.

It’s likely appropriate to start with an introduction. What even is Software Engineering? The truth is that most of us don’t have a reliable, succinct definition. For now, it suffices to be someone who likes math and can code — you’ll figure the rest out later. You have a long road ahead of you (hopefully), so here are some important things to think about.

  1. You were probably pretty smart in high school. You might not have gotten dumber, but the playing field isn’t the same anymore. It’s going to take a little getting used to, but you might have to become comfortable with being average, or even below it.
  2. There exist two qualities that successful people tend to have — some are really smart and some work really hard. These qualities, however, are not mutually exclusive and it won’t suffice to be solely either one. If you rarely studied in high school, that’s not going to work anymore. If you’re good at studying but don’t have a passion/inclination for SE, you’re also going to have a hard time.
  3. People are NOT out to get you. Most of the people you will meet are amazing, friendly, and will help you if you simply ask. SE has a reputation of being really competitive, but in reality most of us want the best for each other and just want to succeed alongside our peers. Be one of these people, and you’ll find that helping others will benefit you as well.
  4. Your grades matter, but they aren’t everything. Especially in first year, it’s true that better grades can/will influence your coop opportunities. However, this doesn’t mean that doing poorly in your academic term will make it impossible to get a good job, and it also does not mean that good grades will result in a good coop. Stay positive, even when things don’t go the way you hoped.
  5. Make friends! I highly recommend having a small group of friends that can all lean on each other. If you miss an important class or need someone to save you a seat, there will always be someone that has your back. Also, you’re stuck with these people for 5 years, so learn to like them. This will also make your university experience a lot less lonely and a lot more fun.
  6. Make some friends in upper years. Most people are happy to help you out if you need advice about anything. Shoutout Jerry Yu and Cindy Wang for being those people for me! On that note you can message me on Facebook or IG @Yashydoodle :)
  7. PLEASE shower daily, use deodorant, and maintain good hygiene. I haven’t noticed this problem a whole lot in our year but there are definitely some people out there that need to hear that.
  8. There are mental health services available if you need them. Despite how repetitive it may sound, there are genuinely people who suffer from mental health issues, and it often isn’t obvious. Make use of these services, and if something is up, tell someone.

Here are a couple tips that are slightly more specific to Software Engineering that you should keep in mind.

  1. Rule 1 of SE is don’t talk about SE. In all seriousness, avoid telling anyone you are in SE unless they specifically ask. Even if they do ask you, hesitate a little like you’re ashamed of it before telling them. I recommend just saying “Software” or “SE” instead of “Software Engineering”, because a surprising amount of people won’t know what you mean. If they do, you will inevitably be asked “Oh, so you must be smart, right?”, which sucks because there is rarely a simple way of answering it without sounding pretentious. (My go-to answer in this case is “Haha, I wish”)
  2. Be nice to Derek Rayside and (Queen) Victoria. They’re insanely kind and always willing to help you out. In addition to being nice they’re also incredibly knowledgeable! If you ever want to ask about career advice, school advice, or really anything, you can.
  3. It is important to remember that your classmates are (probably) just as smart, if not smarter than you. Don’t take this negatively! All this means is that your friends are often an amazing resource. If you ever get stuck at any point, there’s almost always someone who has finished what you’re working on and is willing to help you out.
  4. You CAN have a social life. It is definitely true that there is a lot of work, and while I am not saying that the program is easy by any means, I do believe it is important to maintain a healthy social life. This implies that you also become used to managing your time effectively. I highly recommend importing your UWFlow calendar onto Google calendar and creating events for assignments, quizzes, midterms, exams, and other important dates. Staying on top of everything can be just about as difficult as the work itself, so I cannot stress this enough.

If you’ve made it this far, it’s probably because this information directly applies to you. Throughout the term you’re going to be taking 6 (more like 5.5) different courses, so here’s some of the course-specific information I would have wanted to know.

  1. Calculus 1 for Engineering (MATH 117)
    This course is pretty much AP Calc in high school with extra steps. The first half of the course is essentially just limits, with the second half covering derivatives and integrals. They do of course go more in depth, but most of the information should be relatively familiar to anyone who finished high school. Do the online assignments for the course as soon as you can, since they’re free marks and don’t take that long to do. The quizzes are incredibly similar to the online practice sets that they have, so use them! If you ever miss a lecture you can always just refer to the course notes, since they’re in the same order that the class follows. I highly recommend buying the course notes even though they’re optional. I actually found the midterm for this course to be relatively difficult, but this varies every year. For the final exam, there is typically always one question that nearly no-one is able to do, so if you’re tight for time your best bet is to skip that one and look over the others.
  2. Introduction to Linear Algebra (MATH 115)
    The first half of LinAlg is really just vectors, with some added information. However, the main focus of the course is matrices, which means that many if not all of the concepts are new for most people. The weekly quizzes are really useful since they force you to study consistently, and there are a variety of resources online for practice. If you ever want to do past exams, just go to the EngSoc or MathSoc website and they typically have them.
  3. Language and Proofs in Algebra (MATH 135)
    The first half of this course is incredibly soft, but also pretty fun. They teach you how to properly write a mathematical proof, and some of this information is useful in Calc and LinAlg. Later on the course starts to get more confusing with GCD, modulo, and field concepts. Aim to do well on the midterm since it is intentionally easy, and also try to complete the assignments as soon as possible. They sometimes take quite a while to do, so I recommend working in a group.
  4. Classical Motion (ECE 105)
    This was probably my least favourite course of the term, which was odd because it was also the one I did the best in. Until the midterm, all of information is high school physics but with harder questions, but you start learning more new concepts afterwards. The midterm and final are supposed to be pretty hard, but this also tends to vary depending on the year. I noticed that in recent years the exam was always incredibly similar to the exam two years prior, so keep that in mind.
  5. Computer Science (CS 137)
    There’s honestly very little I can say about CS. The assignments are not too difficult, but they do take some time to think about. Even the midterm and final are highly dependent on your prof and there are few resources to help you out. Your best bet is to review information from in class, but if you want to do well I highly recommend having a good understanding of how to code to begin with.
  6. Software Engineering (SE 101)
    This was by far my favourite course of the term. The only assignment that actually matters is one in which you’re asked to build whatever you want (using at least one hardware component) in a team. You can spend this time learning new languages, technologies, and having fun. There are also reflections, but as long as you submit anything decent you get 100. There’s also no exam, which is amazing. The only downside is that it is only weighted as half a credit :c

In all sincerity, it was hard enough getting here. But in true cliché fashion, your journey has just begun. The story of this incredibly part of your life, the story of its ever-winding nature, and the story of how these twists and turns will shape your future self begins very simply. It begins right here, at the University of Waterloo.

May the odds be ever in your favour.

--

--