Posts

CST438 - Week 1 Learning Journal

           Upon attending the orientation for CST438: Software Engineering, I was surprised to learn that this class positions physical programming as more of a backseat concept to the core subject matter of the presented curriculum. After having read through chapter 1 of Software Engineering at Google, I see there are many non-programmatic concepts a developing programmer must learn--pun absolutely intended. This class somewhat reads as more of a conceptual and spiritual sequel to Software Design since that class focused on sound design patterns for building functional, scalable, and reworkable software. To address how my perspective has shifted upon completing week 1's materials, I will dedicate a paragraph to the REST labs and a subsequent paragraph to the SAG reading.          The REST application labs 1 and 2 were a strong start of blending a small programming challenge into illustrating how responsibility is delegated across e...

CST462 - Service Learning Reflection: LibreOffice

 Service Learning: LibreOffice Software Development Reflection           Throughout my service-learning experience with LibreOffice, I gained a much-needed and hands-on understanding of what it actually means to engage with a large, long-lived open-source codebase. One of the biggest victories was simply learning how to navigate the environment--getting the project to build, understanding the workflow through Gerrit, and becoming comfortable using tools like "git grep" to locate and modify relevant code. These may seem like small steps but in a project of this scale they are foundational and non-trivial. I feel very prepared to dive into another huge codebase where I must accept that I simply will not be able to understand much of what I see and instead will have to drill down into one specific focus to gain understanding and contribute efforts.           The most impactful parts of the experience were seeing how rea...

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 ...