Intro

Spring 2023 is the term where I’m actively seeking for coop + working as a TA + being involved with some organizations. I initially took 4 courses and had to drop CMPT 376 mainly out of fear of getting burnt out from seeking coop and the other time commitments I had for that term. Going to school only 2 days a week (Monday and Wednesday) really helped me in making all of these time commitments possible and keeping my sanity.

Courses

CMPT 307 - Data Structures and Algorithms (Qianping Gu)

Course Experience: 3/5
Pros: Assignments focused on understanding, the exam is answered in English (no need to focus on coding syntax), caring and understanding prof
Cons: Dry lecture (too focused on math formulas and no proper easy explanations)
Self-feedback: It’s ok not to attend lecture, but make sure to catch up with the materials weekly and have the remaining time to clarify via office hours or end of the lecture

I had always been slightly interested in algorithms. It’s supposed to be one of those fundamentals students need to have as a CS Major. This class reminds me again of the importance of self-study and a good system. The slides from the class are too hard to understand for someone that has not been too engaged in a math class.

If I were to take this class again, I would mainly focus on Abdul Bari’s videos and practice some problems on LeetCode, especially the Dynamic Programming part. Abdul Bari’s videos are so special because he makes it easy for me to understand deeper concepts easier. After that, I can revise the slides and finally understand what the math formula meant.

CMPT 431 - Distributed Systems (Keval Vora)

Course Experience: 4.5/5
Pros: Interesting topics and assignments, engaging lectures and discussions, NO EXAM!
Cons: Marking too harshly on the assignments, Sometimes answers are not clear during lectures
Self-feedback: Do the assignments early so you can ask more questions to the instructor and classmates

This class is probably my most anticipated class during my undergraduate years. The idea of having a lot of computers working together to achieve a task faster is always fascinating. I definitely do not regret taking this course but my expectation differs quite a bit from the actual content. Btw, the grade for this course is based on assignments (60%) and quizzes (40%), which I personally like and find interesting.

Firstly, this course puts more emphasis on teaching us about parallel programming

Parallel computing is a type of computation in which many calculations or processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. From Wikipedia

About first half of the course teaches us how to think of things in parallel. It’s about solving problems faster with more resources.

Imagine having 5 rooms of equal size and 6 painters. The worst way to solve it is to have a single painter paint all 5 rooms while having the 5 remaining painters idling. A better solution is to have 1 painter each to paint a room. And the best but harder solution is to divide these 5 rooms into 6 tasks, so each of the painters can work on an equal amount of tasks (or in this case, areas to paint).

My main expectation was that I would be doing more stuff in distributed systems and learning some of the distributed systems software. However, having a strong foundation first is more important than doing things without actually knowing what happens behind the scene.

CMPT 363 - User Interface Design (Lawrence Kim & Xing Dong Yang)

Course Experience: 3/5
Pros: Refreshing topics (not too technical), well-explained slides
Cons: Marking seems inconsistent with different TAs, too theoretical and less hands-on stuff, and the lecture is a bit self-explanatory since it’s just talking about the slides
Self-feedback: Save the time attending lectures to doing and polishing the assignments

I was quite excited to take UI Design since the topic is quite relevant to the tech industry and usually, engineers do not get to know what’s design in depth.

The overall course content is good-to-know. I don’t know if it will be directly useful, but it provides a lot of things you know about designing. If I were to summarize the whole content, it’s probably about 4 types of user interface evaluations (quick and dirty, analytical, usability testing, and field studies). Heuristic Evaluation is one of the biggest things as part of the analytical evaluation.

My main problem with this course is the quality of the assignments and the presence of a final exam. The assignment is too focused on some type of evaluation while leaving no room for another type of evaluation. The presence of the final means we need to brute force and memorize the course and forget most of the contents after that.

I like the way CMPT431 teaches the stuff. Quizzes are probably better than the final as more things tested routinely give you better memory retention than 1 final assessment. But the best solution is to just have more assignments spread across the term. Since the user interface is inherently more subjective than other CMPT courses you learn, it’s much better to have you do more things and evaluations than remembering stuff that you can easily read from books.

Job Seeking

I was also actively seeking for Summer 2023 Co-op. Hearing a lot of tech industry layoffs made me quite pessimistic about securing the co-op for the summer. Having an internship has been quite a strong urge since I didn’t feel like taking courses in the summer. Why not just don’t take courses and enjoy the summer? The option for me was either to take courses full time or go back to Indonesia. Enjoying the summer here feels expensive for me and I didn’t feel like going back to Indonesia for now.

I started applying quite religiously in late December. By mid-January, I started to get 2 interviews from Huawei and Visier. In both of these interviews, I conditioned myself to be more confident by being very pessimistic and not expecting anything at all. I think this worked quite well for me.

The desire for a more positive experience is itself a negative experience. And, paradoxically, the acceptance of one’s negative experience is itself a positive experience - Mark Manson

The interview from Huawei was a 1-hour technical interview. I managed to know how to solve it in pseudocode but only managed to code it halfway. I am not really feeling it for this one mostly because it’s my first one, but overall it’s a really good learning experience.

The interview with Visier was 15 min call with the recruiter and 1 hour technical with the senior engineer. I think this one went better than Huawei’s but I also wasn’t able to solve the last problem in optimal time for the technical interview, so I kinda expected that I wouldn’t get the job at all. The day after the interview, I got a phone call telling me that I GOT THE JOB!!! I’m super excited to join Visier as a Software Developer Co-op for 8 months (May - Dec).

From this interview, my main takeaways are to focus on the company’s values and expressing your personality. I tried to have strong body language by making my hand travel around the webcam and also a facial expression when thinking and answering. I also managed to do some research about Visier products. The product resonated with me a lot as it’s actually about helping people’s lives. Showing this passion and interest probably helps me in landing the job.

After that, I was deeply grateful to land 12 other interviews which I could not take because I already took the co-op offer, and being in the co-op program means your co-op office automatically declines any upcoming interviews. Huawei also reached me out again for the next round of design interview and I had to cancel it because I did not want to waste their time. In the future, I would probably try applying to companies externally, but I didn’t really regret anything since it’s my first co-op and I’m just really happy to have any offer.

If you are currently planning to find a co-op, feel free to reach out at brian.rahadi@gmail.com. I’m not sure how I can be of any help, but I’m more than open to sharing my personal experience and advice I found useful in landing my first co-op job. I probably will write a more in-depth guide about this in the future.

What went well

  • Organization and work life is managed
  • Mental health was quite steady

What could have been better

  • Better time management (more timeboxing and having assignments finished during the day)
  • Focus on doing things (assignments) is more important than understanding the materials too deeply.

Conclusion

Enjoyed spring 2023 as I finally choose 2 courses of my interest and not because of requirements. Somehow I don’t know how I managed to finish my third year as I’m feeling like I just started uni yesterday. Also struggled but learned a lot in finding a co-op job.