Algorithmic
thinking.
Studied fundamental algorithm design paradigms — divide and conquer, dynamic programming, greedy methods, and approximation — alongside rigorous complexity analysis and NP-completeness theory.
overview
What I
learned.
COMS311 focuses on the fundamental principles and techniques for designing and analyzing algorithms. The course covers sorting, searching, graph algorithms, string matching, and NP-completeness. Multiple design strategies are explored including dynamic programming, divide and conquer, greedy methods, and approximation algorithms.
Performance analysis is examined through asymptotic, worst-case, average-case, and amortized approaches. Topics also include advanced data structures such as balanced trees and hashing.
highlights
Key
topics.
projects
Hands-on
work.
A major coding assignment involved writing a Depth-First Search (DFS) algorithm from scratch to analyse graph connectivity and traversal efficiency. Another project required designing a graph-based network analyser to identify and evaluate critical links using algorithmic efficiency principles.
These exercises emphasised translating theoretical algorithmic design concepts into optimised and maintainable code, strengthening my understanding of performance trade-offs, data structure selection, and algorithmic scalability.