A personal repo for coursework that implements and analyzes fundamental algorithms and data structures for CS3310: Design and Analysis of Algorithms (Spring 2026).
Textbook: Introduction to the Design and Analysis of Algorithms by Anita Levitin
- Algorithm Design Techniques: Divide-and-conquer, transform-and-conquer, greedy technique, dynamic programming, etc.
- Time Complexity Analysis: Big-O, Θ, and Ω notation
- Data Structures: Graphs, trees, heaps, hash tables, etc. and their applications
- Problem-Solving: Developing efficient solutions to computational problems
class_repo/
├── 💻 prog1/ # Cycle Detection w/ DFS
├── 💻 prog2/ # Anagram Detection w/ Presorting
└── 📄 STYLE_GUIDE.pdf # Class Coding Style Requirements
Each programming assignment is self-contained in its own directory with documentation and algorithm explanation. To ensure comparability and consistency across submissions, all programming assignments are required to be in Java. Refer to the CS3310 Style Guide for code styling requirements.
Analyzes undirected graphs to identify connected components and detect cycles using DFS.
- Key Concepts: Graph theory, DFS traversal, component analysis, tree vs. back edges
- Time Complexity: O(|V| + |E|)
Finds all anagram sets in large word files using a presorting technique.
- Key Concepts: Transform-and-conquer, presorting, hash tables, algorithmic efficiency
- Time Complexity: O(n × m log m)