Posts

Showing posts from February, 2026

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.