Posts

CST 438 - Software Engineering - Week 3

Image
  How does React compare to other frameworks you have used for front end development?  What do you like, and not like, about React? I do not have a lot of experience with web development, so I have not really used other front end frameworks besides React. At first, React felt a bit confusing to learn, especially with all the components and state stuff. But once I got the hang of it, I started to really see how helpful it is. It makes building user interfaces faster and easier to manage, especially when working on bigger projects. What I like most is how reusable the components are, you do not have to repeat yourself as much. What I do not like is that there is kind of a steep learning curve in the beginning. Still, I think learning React is one of the best skills to have if you want to get better at front end development or grow professionally in this field.

CST 438 - Software Engineering - Week 2

Image
  In lab 1, we used something called a Mock in our JUnit tests. A Mock is kind of like a fake version of a class or object that we do not want to use directly in our tests. It helps us test just the part of the code we care about without needing everything else to work. For example, if one part of the code talks to a database or an API, we can use a Mock instead so that our test runs faster and is not affected by outside stuff. This makes it easier to find bugs and keep our tests simple and reliable.

CST 438 - Software Engineering - Week 1

Image
  Before starting this course, I expected software engineering to be about writing code and building software applications. I thought it would be like the other programming classes I have taken, where the focus is mainly on syntax and getting the program to work. I figured we would work on a team project, write some code, and maybe talk about best practices on how to implement each project. After completing week 1, my mind has changed. I have learned that software engineering is more about making code maintainable and sustainable over time, not just getting it to work today. The quiz and reading from the Software Engineering at Google book showed how important things like version control policies, testing strategies, and codebase size are. One concept that stood out was shifting left, which means addressing problems early in the development process, like thinking about security and performance from the beginning. Overall, I can already tell this class is going to focus more on real...

CST 462S - Race Gender & Class Digital World - Week 8

Image
  My service learning experience was great overall. I had the opportunity to work with a classmate to create a tool for The Furnace Teen Center . The project was to build a sign-in form that students could use before starting an activity. For example, if a student wanted to do some reading, they would scan a QR code that took them to a form where they entered their info. That info was then sent to a spreadsheet so the site supervisor could track who was participating and when. One thing I think could be improved is making the tool work more like a gym check-in system. Each student could have a membership card that, when scanned, would automatically log their activity into a database. But to do that, we would need to build Android and iOS apps, which takes way more time than the 25 hours we had. This kind of project really needs someone with experience in app development and a longer timeline to do it right. One of the biggest challenges was the time limit. Since we only had 25 hour...

CST 370 - Design and Analysis of Algorithms - Week 7

Image
  This week in CST-370, I learned about non-comparison based sorting algorithms such as Counting Sort and Radix Sort. Unlike traditional sorting algorithms that rely on comparisons, Counting Sort uses frequency counting and distribution calculations to sort integers efficiently when the range of numbers is relatively small. The time complexity of Counting Sort is O(n + k), where n is the number of elements and k is the range of values. Additionally, I learned about Radix Sort, which processes numbers digit by digit, starting from the least significant digit (LSD) and applying Counting Sort iteratively. Radix Sort is particularly useful for sorting numbers with multiple digits, and its efficiency is O(d * (n + k)), where d represents the number of digits in the largest number. Counting Sort maintains the stability of elements, preserving their relative order in the output. I also learned more Dynamic Programming (DP) and its applications in optimization problems. The concept of over...

CST 370 - Design and Analysis of Algorithms - Week 6

Image
  This week in CST-370, we learned about more advanced data structures such as AVL trees, heaps, and hashing. AVL trees solve the issue of unbalanced binary search trees by maintaining a balance factor between -1 and 1, ensuring logarithmic time complexity for operations like search, insert, and delete. I learned how rotations (left, right, and combinations of both) restore balance when inserting or deleting nodes. The concept of balancing height was interesting because it talks about the trade-offs between complexity and performance. We also learned about heaps, focusing on their role as priority queues. A heap is a complete binary tree where each parent node adheres to a specific order property, either greater than (max-heap) or less than (min-heap) its children. I learned the importance of heapify operations and how heaps support efficient insertion and deletion in logarithmic time. Also, heapsort was introduced as a sorting algorithm that leverages the heap’s structure to achie...

CST 370 - Design and Analysis of Algorithms - Week 5

Image
  This week in CST-370, I learned more about QuickSort and its importance in algorithm design. QuickSort is a divide and conquer algorithm, which stands out for being efficient and "in place" unlike Merge Sort. I learned how the partitioning step affects its performance, with the best case being a balanced split and the worst case occurring when the partition divides unevenly, such as in already sorted or reverse sorted arrays. Empirical analysis mentions the practical implications of efficient algorithms over brute computational power, which made me prioritize learning effective techniques. Additionally, I learned about binary tree traversals, specifically preorder, inorder, and postorder traversal methods. These techniques consist of visiting each node and I practiced some examples to better understand the order in which nodes are visited. Also, I was introduced to the "Decrease and Conquer" approach, an algorithm design technique that simplifies a problem by solv...