COMP2123: Data Structures and Algorithms

University of Sydney• 2025 S1
Completed
logo
Algorithms
DSA
Python
Complexity

Strengthened algorithmic problem-solving with solid communication—clear code, clear analysis, clear delivery.

Learning Outcomes

  • Algorithm Design & Analysis: Designed solutions (divide-and-conquer, greedy); analysed complexity with Big-O.
  • Data Structures: Worked with lists, stacks, queues, heaps, trees, hash tables, graphs and their trade-offs.
  • Recursive Programming: Wrote recursive procedures over structural data.
  • Core Algorithms: Implemented sorting, tree traversals, graph traversals.
  • Performance Evaluation: Used mathematical reasoning to evaluate efficiency and suitability.
  • Professional Communication: Explained ideas to technical / non-technical audiences in oral & written forms.

Takeaways

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.