Strengthened algorithmic problem-solving with solid communication—clear code, clear analysis, clear delivery.
This course turned out to be one of the most challenging parts of my computer science journey. From recursion, trees, heaps, and graphs to algorithmic strategies like divide-and-conquer and greedy methods, the workload was heavy and the concepts required constant precision. I struggled with implementation details and efficiency analysis, and my final performance reflected the difficulty I had in mastering these techniques. Still, the experience was formative: I learned to be patient with abstract reasoning, to recognize the cost of algorithmic choices, and—importantly—to realize that I may not thrive in pure algorithm design. Instead, the struggle helped me clarify that my strengths and interests lie more in applying computational tools and systems to solve higher-level problems. In hindsight, even the difficulty itself became a takeaway: it shaped my awareness of where I add the most value as a learner and practitioner.