Posts

week 7

This week I worked on the coin collecting problem and Floyd’s algorithm. The coin problem helped me understand how dynamic programming builds solutions step by step using a table to keep track of the best results and avoid recomputing values. Floyd’s algorithm showed me how checking each vertex as a middle point can find the shortest paths between all pairs in a graph. Writing both in Java helped me get more comfortable using 2D arrays, nested loops, and turning logic from class into actual working code. Overall, this week helped me better understand these algorithms and improved my confidence in implementing them on my own.

Week 6

This week we covered AVL trees, 2-3 trees, heaps, and hashing. The biggest thing I learned was how AVL trees stay balanced using rotations, which helps keep operations fast and efficient. Rotations were a little hard to visualize at first, but after using the visualizer and practicing, it started to make sense. Learning about 2-3 trees and heaps also showed me how important structure and organization are for performance, especially when working with large datasets. Overall, these topics helped me better understand how efficient data handling plays a big role in real-world systems. Outside of class, I’ve been trying to stay more aware of the tech job market and current events. I read about France moving away from some foreign software to strengthen its digital sovereignty, which made me think about how technology, infrastructure, and global politics can shape the tools and systems we work with. It also reminded me how important it is to prepare for a changing job market by building str...

Week 5

This week covered a lot of material. One of the sorting algorithms we looked at was Quick Sort. Quick Sort works by choosing a “pivot” from the array and splitting the remaining elements around it. Another variation of Quick Sort uses the median-of-three method, which helps reduce the chance of running into the worst-case scenario and keeps performance more stable. Another data structure we studied was binary trees and how to traverse them. There are three main traversal methods: preorder, inorder, and postorder. Visually, the traversals make sense to me, and seeing the order in which nodes are visited helped me better understand how tree-based data is processed. Lastly, we were introduced to DAGs (Directed Acyclic Graphs) and topological sorting. Binary search is still one of my favorite ideas—cutting a problem in half over and over feels clean and efficient. DAGs were new to me, but I can already see how they relate to real-world problems like scheduling tasks and managing dependen...

Week 4 journal entry

Week four focused on another algorithm called merge sort. The basis of merge sort is the divide-and-conquer approach. The array is recursively split into smaller subarrays until each subarray contains a single element. These subarrays are then merged back together in sorted order. One of the most important things to remember about merge sort is its time complexity. In terms of Big-O notation, merge sort consistently runs in O(n log n) time, which makes it much more efficient than simpler sorting algorithms for large data sets.

Week 2 journal entry

Week 2 Journal Entry Recursion has been a difficult journey for me so far. I was introduced to recursion in a previous class, but coming back to it again is still challenging. Understanding base cases and visualizing how the code flows step-by-step takes a lot of practice and deeper understanding. One of the hardest parts for me is trusting that the recursive calls are actually moving toward the solution. Sometimes I understand what the code is supposed to do, but I still get stuck figuring out how the function “unwinds” and returns the correct value. It’s easy to make mistakes when the recursive logic is slightly off, and even small errors in the base case can cause infinite recursion or incorrect results. Tracing recursion step-by-step has been helping me slowly build confidence and understand the pattern behind the code. Another topic that I’ve been working on this week is Big-O notation, which has been helping me think about efficiency instead of just whether my program works...

Learning Journal: Design and Analysis of Algorithms week #1

Spring 2026 CSUMB Design and Analysis is the first class of the new year! Our cohort is expected to graduate this December, and I am really looking forward to completing my degree. This first week in Design and Analysis was quite jam-packed with material. Most of it was review, as some of our earlier classes exposed us to these concepts. Although it was mostly an overview of many different topics, it felt like a precursor to the challenges that lie ahead. We went over the basic principles of pseudocode and how helpful it can be when designing an algorithm. The whole point of pseudocode is to make it in English but programming-language agnostic. It's meant to serve as the scaffolding used to create an algorithm. Out of all the material we covered, I believe the fake coin puzzle was the most interesting. Solving it with the three comparisons was quite easy. It almost felt like binary search by constantly cutting the dataset in half. But the two-comparison solution was the most int...

Journal Entry Week 8

 Throughout the course of this semester, I have learned many things about how an operating system works under the hood. In addition, I have gained a deeper understanding of memory management.  It is clear to me how powerful low-level operations and how dangerous it could be when in the wrong hands. Before this class, I felt that learning operations systems and low-level language was archaic. But as unforgiving C is… Its quite satisfying to have that much control when programming.     My favorite part of this class was the group project section. As we began to learn new concepts that felt very out of touch with modern technology (from my novice point of view), it was a impressive to see how other people are researching ways to utilize old technologies and improve on them. My group’s paper studied the effects of the IO scheduler and Ultra-low latency devices such as a Solid state NV Me. Their findings blew my initial understanding of hardware out of the water! For...