before - term-review-2023spring
intro
can’t believe it has been 16 months from the previous term review ;)). fall 2024 has concluded and I am grateful for the experience that this term has to offer. from courses, clubs, job seeking, and ta-ing. It has been an enriching term with diverse stuff of busy-ness.
this term I am taking 3 courses under the same prof. nick sumner. He is easily one of my favourite instructor at SFU as his domain is in my area of interest and all of his advice (course, career, life) really closely aligns with my perspective.
courses
cmpt 373 - software development methods (nick sumner)
notes can be found here
course experience: 4.5/5
pros: applicable lectures, get to know a lot of design patterns and C++, just really enjoyable content in general
cons: easily the heaviest workload course of all time, hard but interesting exam
self-feedback: do assignments way earlier and do timeblocking (though a lot of stuff and overall I am glad with how it turnt out)
CMPT 373 is one of my most anticipated course as I have been planning to take it since fall 2022. Finally after taking it, I am glad with how it has turned out. Coming into the course, you need to relearn C++ and later on, familiarize yourselves with modern C++. Modern C++ code is nothing like C++ and it is so beautiful.
but that is not the main point of this course, the language is the tool and we are instructed to learn various software development stuff (design, testing, inheritance, polymorphism). A lot about OOP but this changes the way I see about OOP as it is used in a very practical and pragmatic way.
the main assignment of this course is a group project where we need to make a social gaming networking platform in C++. requirements were hard and most teams did not finish implementing it, but the experience of trying to finish it was a great learning experience.
overall, a lot of people felt this course is too hard and heavy - we have projects, biweekly exercises, readings, code reviews, and exams. This is a course where you will need to focus and get everything done. My way of getting through it is to identify the part where I have to treat with extra care and others where I can try to finish in least amount of time possible. In this case, it was only exercise where I have to be extra careful about.
cmpt 473 - software testing, reliability, and security (nick sumner)
notes can be found here
course experience: 4/5
pros: interesting to see all possible testing methodologies, fun-ish assignments
cons: weekly quiz but it is not worth that much, assignment feedback always pretty late
self-feedback: note take consistently in the lecture, not leave classroom before not understanding important thing
CMPT 473 is quite related with 373 for testing. I find the course material to be quite useful as testing is always useful but not talked more often.
alot of testing stuff are discussed. Not everything is practical of course, but there are several that caught my mind on its applicability and why it is not often enough like property-based testing. a lot of other interesting testing stuff like mutation testing and random testing.
also, Chaos engineering is quite cool but it’s only talked in high-level. Would love to see its broader applicability and seeing it in action like how Netflix made Chaos Monkey as its chaos engineering tool to test a system.
we also talked about reliability and security. It’s not in-depth but as someone with no experience, it’s really cool to see how we can break vulnerability through code and hack someone’s password
cmpt 494 - software systems program capstone project i (nick sumner)
course experience: 5/5
pros: get personal mentoring time from a professor
cons: -
self-feedback: spend more time researching on the course
capstone! it’s like engineering capstone but for software. the topic that I chose is Assessing LLM Generated Software Patches.
here is the description
Large language models (LLMs) power tools like ChatGPT and GitHub Copilot that can automatically generate code or automatically patch existing code to add features or fix bugs. In spite of their popularity, code generated by these tools is notorious for looking correct but being incorrect, performing poorly, or containing security flaws.
In this project, students will develop a tool that takes such candidate patches for a project and (1) determines whether a patch is acceptable or not and (2) ranks acceptable patches for the same feature/bug by preference. These ranked lists of acceptable patches can be used to help developers choose whether to trust patches.
Students will gain experience with using LLMs for code generating code, applying testing techniques like regression test selection, and program analysis techniques for reasoning about nonfunctional code attributes like performance and security. The tool will use these to assess the overall likelihood that the patch behaves as intended.
a 2-term project and what we are building this term is the infrastructure first - which is building regression test selection system to only run the necessary test, that is, new tests or test on modified source files. Later, we are exploring LLMs to be integrated and can successfu
i really enjoyed building this under supervision of Dr. Nick Sumner and got to learn all cool things.
cmpt 130 ta-ship
i got to TA SFU Course for the first time this term. It’s an Introduction to Programming in C++. Grateful to have this experience was really as it’s unlikely to be an undergraduate CS TA at SFU.
nothing much to add compared to my previous TA experience at Langara, got to say that it was cool to see that this course used Docker to run the C++, which is way faster than running it on SFU Computer and reliable to compile than running your C++ in your own system.
clubs
sfu surge
i joined SFU Surge over the summer and co-led their Logistics. it was fun (and sometimes overwhelming) leading tech events at SFU.
i was debating whether to join previously but as my final year is approaching. starting to think, what things I would regret not doing if I finished uni - thus started to think more about elevating SFU tech community with its vast amount of people. I would love to see more CS people being active in clubs, host events, and help each other. I am the part of the product of the environment and only if this environment is thriving, that I can even be more thriving. i decided to join surge in the end.
this term, we hosted off 4 events:
- Icebreaker Kickoff Meet and Eat
- StormHacks 2.0 2024 - 200+ Hackers, 36 Judges
- Hosted the pre-hacks Intro to Git and during-hacks Intro to Full Stack Development with Convex
- Blockchain and Web3 in Gaming Fireside Chat & Networking Event
- StormForge Program Kickoff - 60 members - developers and designers
and many more for next year! :D
intervarsity sfu
I have also been a part of InterVarsity SFU (a christian fellowship club) where we have a weekly events on Thursday - we usually do bible study or a topic-based even alternately.
joining intervarsity was truly a test of faith as it always served a reminder for me to not just think about my studies while in university, but also about personal and relationship growth.
intervarsity is one of the ways as i try to continue learning what it means to live a life well lived, having fellowship with friends, and continually learning what God has to teach me.
what really made me join intervarsity is its awesome group of people - i have been here since i was at langara from 2020, continued in SFU in 2022. aside of that, we have this amazing retreat on an island 2 times a year and I have been there for 5 times now.
job seeking
i am glad to announce that I will be joining RBC for January to April 2025 working on API Automation, DevSecOps team in Toronto. This meansss relocating. I am excited to see what the city has to offer :D.
Other than the RBC offer that I got, job seeking this term has been quite rough. I have too much things on my plate, which made me to now really spend enough time on getting better on the interviews. Overall, I still got quite some interviews, but the performance has not been what I envisioned.
but that’s fine as long as I get to score one :). please hmu if it’s between january - april 2025 and you are in toronto when you are reading this.
my lessons for future me:
- set a routine for practice
- chill out, everything will be okay
what went well
- relationships are well maintained
- still quite well managed and have relaxful time on the weekend
what could have been better
- growth (gym, routine) was neglected when things get busy
- not much time spent focusing on school, things mostly finished close to deadline
conclusion
this term has been quite a wild ride for me, but it was overall manageable as I was only taking 3 courses. I will only need 4 more to graduate, yay!
if i have to redo this term, I would still take the same amount of responsibility, just that I have to remember to not neglect gym and routine. stuff will always be busy no matter what, so putting those big rocks first are crucial and believe that things will follow up!
signing off, brian ೭੧(❛〜❛✿)੭೨