Posts

CST370 - Week 7 Reflection

   Week 7 Learning Recap           Week 7 of CST370 was a reinvigorating volley of algorithmic delights. I found myself looking forward to the programming assignment during this week’s lectures and puzzles. I always love actionable steps, the pathway to victory as my Calculus professor once called it. As the shadow of the final exam looms ever closer, I have been quite intentional about fully absorbing the lecture, example, and textbook excerpt before moving onto the next concept.           This week's algorithms folded very nicely into each other throughout the module. Counting sort using frequency and distribution to place in the index was the perfect simple intro to stack Radix's LSD method of going digit by digit.  The coin collection problem was my first "alright pausing on this and clocking back into work" moment, but upon returning became quite clear--I appreciate that dynamic programming is tactile and ca...

CST370 - Week 6 Reflection

 Week 6 Learning Recap           Week 6 of CST370 revealed many clear-cut rules and hands-on navigation tools for the handful of data structures covered, including but not limited to: balanced binary search trees (AVL and 2-3 trees), heaps, and hash tables. In the fight to not feel overwhelmed amid the many moving pieces we deal with in CST370, I greatly appreciate how each structure from this week has a strict internal rule set with an accompanying specific algorithmic repair process when those rules are violated. In theory, that's how all algorithmic concepts should be, but I found working through the example problems to be more tactile and logical than I perhaps expected. This week proved to be a bit more like a Lego set and less abstract than some attempts have proven to be in prior modules. It could just be that the nearness of the next exam looms and needing to absorb the material sufficiently now for the exam is not lost on me. The heap and...

CST370 - Week 5 Reflection

  Week 5 Learning Recap          On the other side of our first midterm exam, I'm now attempting to absorb the material at a more demonstrable level. I was mindful of ensuring practical understanding before continuing my traversal of the week's offerings of Quick Sort, binary trees, Decrease & Conquer, Insertion Sort, Topological Sort, and Transform & Conquer--among other puzzles and detours. A sizeable gap in my exam performance revolved around analyzing time complexities for new algorithms and programs I hadn't encountered yet. This week's module offered moments to rectify that trouble right away by analyzing time costs calculations with the Quick Sort worst-case and best-case T(n) equations.           Following along to Professor Jia's explanation of Quick Sort and w riting out the recursion tree by hand helped clarify why the linear work per level accumulates logarithmically--in the most favorable case at least. Bin...

CST370 - Week 4 Reflection

  Week 4 Learning Recap          Week 4 was a change of pace for CST370 as it was predominantly looking back at the material thus far in preparation for the midterm. I mostly found it to be an enjoyable retrospective; a lot of ideas have fallen neatly into alignment with each other. Naturally, I don't know that I'll feel so serene once I see my grade on this exam. I have a tendency to panic that I must persistently fight to override. Instead of a swarm of fresh concepts and ideas, new material simply focused on Merge Sort as an extension of Divide and Conquer. I'll briefly run through some of my exam preparation strategy and then recount what I recall from Merge Sort.          I first ran through all of the lectures and textbook readings before focusing in on any one topic. From there I broke up the weeks and attempted to use the module items for hot button topics to keep track of and quizzes as a guiding post for how questions migh...

CST370 - Week 3 Reflection

Week 3 Learning Recap          Another week, another dizzying array--or in my case with the homework, vector--of concepts, time-complexity conundrums, and new perspectives on age old programming cornerstones I have only vaguely glanced upon prior to CST370. As the perilous march to the top of the Algorithm mountain persists, I feel both comforted and daunted. On one hand, it is evident that the best cases and best algorithmic solutions to complex problems are a constant moving target that can require varying blends of planning, experimentation, calculation, brute force, and elegance--perhaps even all at once, when necessary. On the other hand, amid the raw mass of strategies and concepts I find myself somewhat awash in a sort of mountainside river that can quickly carry you downstream and force you to retrace your steps back up the range.          In an attempt to gain more stable footing on this week's slew of mental hikes, I will ...

CST370 - Week 2 Reflection

  Week 2 Learning Recap           The second week of Design and Analysis of Algorithms reminds me that "computer science" can perhaps be a bit of a misnomer. By the same naming convention, time complexity and recurrence relations would be reduced to "telescope science" if they were astrological phenomenon. The mathematical and proof-rooted logic presented in CST370 this week wove many strands of thought together--I may have panicked when I heard "induction"--that I will attempt to unweave and reweave here for the sake of my own understanding.          Big O, big omega, big theta ruled--and I sense will continue to rule--the time complexity conversation. I will surely never forget O means upper bound, theta means lower bound, and omega means exact. Prior to CST370, I had some negligible and nebulous understanding of how loops are interpreted for the sake of n , but the lecture and textbook have laid it out very plainly as T(n) g...

CST370 - Learning Journal Week 1: Introduction to Algorithms and Data Structures Review

 Week 1 Learning Recap          The first week of CST370 - Design and Analysis of Algorithms wrought a rousing return to one of my most revered regions of Computer Science: creative problem solving! While I spent the time before this class lightly reviewing typical Algorithm/DSA coding problems, I can appreciate that the curriculum requires first discussing how to approach problems and consider structured solutions before diving straight into the syntax and implementation details. The reading material and lectures from Week 0/1 invite students to think about how we think about problems.          Revisiting the concept of an algorithm was a sturdy if not somewhat expected kickoff to the materials for CST370, this class and textbook provided an initial and familiar concept to get started: Euclid's algorithm for computing the greatest common divisor. Having worried about GCD since elementary school math, peering into this numerical qu...