Waterloo Software Engineering 1A: A Reflection

Aaron Abraham
uWaterloo Voice
Published in
7 min readDec 31, 2019

Term 1 flew past like a breeze! On one hand, it was a welcome change from high school. On the other hand, it was possibly the hardest 4 months to date.

I have 3 parts of 1A that I would like to discuss. Feel free to skip through sections; I hope at least some of my experiences will resonate with you.

  1. My experience
  2. What I wish I knew before 1A
  3. Helpful links!

My Experience

In no other time of my life have I learned as much, made as many friends and had as many experiences as in 1A.

Let’s first dive into academics. Software engineers have the following 6 courses in 1A:

  • MATH 135: Officially termed Algebra for Honours Mathematics, this course was a introduction course to the world of rigorous proofs, number theory and other foundational subjects of mathematics.
  • MATH 115: This course introduces engineers to linear algebra, a field which proves to be fundamental in further applied mathematics in engineering.
  • MATH 117: Calculus 1 for Engineering is meant to be an introductory course to calculus. For those who have taken AP in high school, Math 117 covers all of AP Calculus AB and half of AP Calculus BC.
  • CS 137: To ensure that all software engineers have the same basic knowledge of programming, CS 137 teaches the fundamentals of C and computer science, such as pointers, recursion, algorithm design, and linked lists.
  • ECE 105: This is the typical classical mechanics course that electrical, computer and software engineering students must take. Almost all concepts that are taught in this course have already been covered in high school physics courses, such as relative motion, static equilibrium and simple harmonic motion.
  • SE 101: This introductory course taught software engineers about the basics of engineering ethics, software testing and version control. The highlight of this course was a final project, where we could create a hardware-based project to accomplish anything that we wanted. My SE101 project can be found here.

Overall, academics in 1A was not exceedingly difficult. The main transition that I experienced in 1A was transitioning from the high school mentality of ‘finding the answer’ to ‘why is this answer correct’.

Almost all of the courses expect students to apply foundational concepts learned in class to solve completely novel problems on exams. Thus, having a firm grasp of the basics of each topic learned in class was extremely important.

A typical physics problem

Friends were also a central part of my time at Waterloo. Starting from orientation week, I talked to many interesting people from a variety of places, such as the dorm, the cafeteria and my classes. We had a lot of fun times together and I am definitely looking forward to the next 5 years with my friends.

SE 24 Cohort

I also dipped my feet into Waterloo’s extracurricular scene. Here were some of the clubs that I explored:

  • Data Science Club: I learned a lot about different types of neural networks, met some really smart upper years, and got a much deeper understanding of the implications of data science in industry.
  • Software Engineering Society: I was elected as one of my class’ representatives to the Software Engineering Society. This term, we organized a small hack day where students from all cohorts of Software Engineering were invited to create some hacks.
  • Management Consulting Club: I saw this club during a club fair and it piqued my curiosity. Although I have no business background, the cases that we solve are extremely interesting.

Most of the clubs at Waterloo are participatory in nature, but I managed to snag some more involved roles for next term. Starting in Winter 2020, I will be a Project Developer for Blueprint, a club that creates tech solutions for non-profits. I will also be helping UW’s Product Management Club with some events and logistics next term.

What I Wish I Knew Before 1A:

  1. The importance of time management and prioritization: In high school, time management was crucial: I could not have survived if I did not know how to juggle academics, extracurriculars and social commitments. However, the key distinction between high school and university is the workload. You will generally have insufficient time to complete everything that you want to do. In high school, it was easy to complete a whole assignment, finish a report and take notes on a textbook section; in university, the workload is intense. Instead of stretching yourself thin by trying to do everything, strategically decide what is worth pursuing and focus solely on it. For many high-achieving high school students, leaving things on the backburner or even abandoning deliverables is unimaginable, but it is sometimes necessary. To me, this strategy often nets a much better return than doing everything at once.
  2. Push yourself into new activities: There are so many opportunities on campus, from dance groups to engineering design teams. Participating in extracurriculars made my 1A experience a lot more enjoyable: I met a lot of different people and learned so many skills that will help me in the future. An added benefit to extracurricular activities is that it made me much more productive when studying, as my time was constrained. I would definitely recommend trying out a few activities in your first few months.
  3. Make friends from a variety of different backgrounds: University presents an amazing opportunity to meet so many people from all types of backgrounds and interests. Capitalize on it. Not only will your network grow, but having a diversity of perspectives from your friends will expand your horizons. Also, given how challenging university can be on mental health, having friends from different backgrounds can really help during those hard times.
  4. Learn how to learn: When I moved into 1A, I thought I could use my high school approach of studying with a few tweaks. It took me less than a week to realize that my study approach was not going to work. Your study habits will need to continuously evolve as you face harder challenges. I am not just referring to note taking styles or the amount of time spent studying: it’s a complete paradigm shift in how you approach studying. Here are some strategies that helped me maximize my study time:
  • Targeted practice: Focus on your weakest link and strengthen it by doing practice problems. If you ever face a challenge, look at the answer and understand each and every step and try the problem again. It’s totally OK to look at the answer key. The best practice problems are the ones suggested by the professor, so look into any assigned problems/textbooks for more problems.
  • Look for past papers: Past papers are the best source for studying for midterms and finals. Not only do they mimic the style of the exam, but sometimes questions are repeated. If you approach past papers like the actual exam, you will be much more prepared.
  • Understand your mistakes: When you get a test/quiz/assignment back, skip over what you got right. Instead, focus on what you got wrong. I like to employ the “5 Why” method: ask yourself why you made the mistake, and keep asking why until you arrive at the root cause (link to the method)
  • Explain the concept to yourself: There were many concepts that I personally found challenging, like rolling motion in physics and diagonalization in linear algebra. However, when I explained it to myself as simply as possible, the concepts finally clicked. Try to teach yourself in varying levels of simplicity; hopefully, you will understand it.

Resources:

Throughout 1A, I found the following links helpful:

  • MATH 115: 3Blue1Brown’s Essence of Linear Algebra — an excellent way to build some intuition behind this subject.
  • ECE 105: MIT’s 8.01SC is an excellent course that mimics the style of ECE 105; the practice problems that the professor covers were strikingly similar to quiz and midterm questions. Also, there are several Indian YouTubers who cover IIT JEE exam questions, which are also at a similar level to ECE 105 questions. One particular IIT JEE video that I found helpful was this, which explained a neat trick for solving conservation of string problems. Also, EngSoc has an exam bank that I found extremely useful.
  • MATH 135: One of the MATH 135 instructors, Shane Bauman, posts videos for every lecture on how to solve certain proofs covered in class. Although they were generally harder than what was given to us in the exam, it nonetheless prepares you for future proofs.
  • CS 137: A past professor for CS 137 has created a treasure trove of resources for this particular course. I would highly recommend his videos, which really clarified confusing topics like pointer arithmetic.
  • MATH 117: The textbook for this course was extremely useful, as the professor that wrote the textbook was our instructor.

Throughout this term, I employed the Feynman method (I have talked about it in a previous post). My flavour of the Feynman method also involved written notes, which I have compiled for every course in this repository.

With everything that I have experienced in 1A, I am excited for how 1B will play out.

Found this post interesting? Kindly tap the 👏 button below!

--

--

Aaron Abraham
uWaterloo Voice

Software engineering student at the University of Waterloo.