The study of algorithms has been one of my favorite topics during my undergrad. In particular, I have enjoyed the most and highly recommend the course ECE406 with Elliot Creager at University of Waterloo. I have also been involved in Competitive Programming.

In this note, I will try my best to explain in simple ways some useful concepts in the field of algorithms, including theory and practical implementations.