COMP3121

Link to University Handbook
Check out what other students think about the course

Overall thoughts

COMP3121 is a tough but rewarding course. I completed this subject in Trimester 3 2023 alongside COMP1531 and COMP3311.

The course mainly focuses on teaching a selection of algorithm design techniques, from dynamic programming to flow networks and more. It's definitely one of the harder subjects that I have completed so far, but also definitely one of the more rewarding subjects to complete. This is because much like COMP2521, understanding and applying the COMP3121 algorithms really tests and develops problem solving skills, creativity and perseverance. In my trimester, this course purposefully avoided any coding and instead wanted students to articulate their solutions to problems as written proofs.

For those that are yet to complete this subject, my biggest tip is to become good at being wrong. The problems that you face in this course are rarely straightforward and are often not meant to be solved in one go. Trying a solution, understanding why it doesn't work, and then improving it to a better solution is a cycle that you will use to not only answer questions but also to learn how the algorithms work. Also, I would strongly recommend trying to solve new problems on your own first. Practicing wrestling with a problem and obtaining a solution yourself is a unique opportunity to develop your problem solving and creativity and is 1000x more valuable than if an answer is given to you.

Overall, this course strongly developed my soft skills and furthered my appreciation of the capabilites of programming

What I took away

There's a lot that this course has given me besides the ability to apply advanced algorithms. It taught me to analyse problems to figure out methods of approach, and to analyse solutions to critique and improve them.

I also developed a lot soft skills. This subject in general demanded and developed my time management, creativity and perseverance. The way that solutions required explanation tested my ability to convey my ideas and strengthened my communication skills. The constant wrestling with questions and algorithms really tested my critical thinking and problem solving. In many ways, these skills that I developed were the most important thing I took away from this subject.

Assessments

This course had three assignments and a final exam.

I found the assignments to be the best part of the course. Each of them tested a different set of algorithms and required us to write proofs explaining and justifying our solution. The questions were challenging and fun to think through and the lack of time pressure allowed a more careful consideration of problems. While at the time the proofs were quite tedious to write, in hindsight it was beneficial as it ensured we had enough understanding so that we were able to express our ideas.

The final exam involved writing solutions to three questions using the algorithms we had learnt during the trimester. While the questions were easier than those asked in the assignments and I managed alright, I did find the time pressure and hurdle in the exam to be slightly counterintuitive. To me, a 24 hour take home assessment or something similar would have been more effective in testing the skills that we developed during the course.