Gurumanie Singh Dhiman | COMS311 Coursework

COMS311: Design and Analysis of Algorithms

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. Students learn multiple design strategies including dynamic programming, divide and conquer, greedy methods, and approximation algorithms. Performance analysis is explored through asymptotic, worst-case, average-case, and amortized approaches. Topics also include advanced data structures such as balanced trees and hashing.

Key topics

Representative assignments & projects

Coursework included practical programming assignments to implement core algorithmic techniques. One project involved writing a Depth-First Search (DFS) algorithm from scratch to analyze graph connectivity and traversal efficiency. Another major coding assignment required designing a graph-based network analyzer to identify and evaluate critical links using algorithmic efficiency principles.

These exercises emphasized translating theoretical algorithmic design concepts into optimized and maintainable code. Through hands-on practice, I gained a stronger understanding of performance trade-offs, data structure selection, and algorithmic scalability.

View Full Code on GitHub