Posts

Showing posts from January, 2026

Week 3

This week focused on the practical implementation of graph algorithms, specifically  Depth-First Search (DFS)  and the  Traveling Salesman Problem (TSP)  using exhaustive search . Applying these concepts through programming has highlighted both the elegance of recursive structures and the significant computational challenges associated with NP-hard problems. Key Concepts & Implementations - DFS & Systematic Traversal : Implementing DFS for directed graphs reinforced the importance of using a "mark array" to track visitation sequences .  A crucial takeaway was ensuring the algorithm follows a  numerical ascending order  for adjacent vertices to maintain consistency in the output . - TSP & Exhaustive Search : Tackling the Traveling Salesman Problem required using  permutations  of vertices to find the optimal Hamiltonian cycle .  While effective for a small number of vertices (under 15), this approach clearly demonstrates how q...

Week 2

Weekly Learning Journal: Algorithm Analysis & Recursion This week, my study focused on the Algorithm Analysis Framework , specifically the formal application of asymptotic notations ( $O$ , $\Omega$ , and $\Theta$ ). While I previously had a surface-level understanding of Big-O, this module challenged me to define the tight bounds of an algorithm's efficiency using Big-Theta. I learned that while Big-O provides a worst-case "ceiling," Big-Theta is often more useful for describing the actual growth rate of non-recursive loops, such as those found in standard sorting or searching algorithms. A significant portion of my time was dedicated to the analysis of recursive algorithms . This was a step up in complexity from non-recursive analysis because it requires setting up a recurrence relation . I practiced the backward substitution method , which involves expanding the recursive calls until a pattern emerges that can be expressed as a summation. For example, seeing how a...

Week 1

  Week 1 Learning Journal Entry Module: Introduction to Algorithms and Fundamental Data Structures Date: January 13, 2026 This week, I focused on the formal definition of algorithms and the various ways to measure their efficiency. I studied Euclid’s algorithm for finding the Greatest Common Divisor (GCD) and compared it to the consecutive integer checking algorithm, noting how algorithm choice significantly impacts performance. I also reviewed fundamental data structures, specifically focusing on graph representations (adjacency matrices vs. adjacency lists) and how they differ for weighted and unweighted graphs. Implementing the Palindrome puzzle was a great exercise in string manipulation; it taught me how to effectively use the two-pointer technique and the importance of data preprocessing, such as filtering non-alphanumeric characters and normalizing case to ensure logical correctness. Finally, the "Fake Coin" and "Mislabeled Baskets" puzzles served as a s...