Monday, July 13, 2026

SWE - Week3

 CST 438 Software Engineering - Week 3

Describe what are the good points about using Git for source code management.  What are possible problems that Git merge does not solve when merging code from different developers? 

Even though this week has been surprisingly challenging for me, managing internship + family + school, I am happy that we got into the actual project, which really relates on how things work at work. We have 2 week sprints, and after those two weeks, we go into planning, which usually takes all day. We use GitLab instead of GitHub, but they are both very similar, just a few differences. For instance, GitHub uses pull requests, but GitLab uses merge requests, which are basically the same thing. I am so glad this class is so focused on real industry work because all the content so far applies to my internship.

I think Git is so important because it helps developers try different versions of the code, while giving them the ability to roll back to earlier commits if needed. For example, I work in a program that shares a baseline framework with another two programs, and I was improving the way the swagger gets displayed and I utilized application.properties to add multiple profiles getting rendered, while it worked for our program, it didn't work for the other two, so that means I broke their swagger. One of the senior's response to my mistake was: no worries, that is why we have Git, to be able to see our oldest versions and implement features that might or might not be needed. So Git really helps to visualize all the changes we make, and at the end of the day, it improves efficiency.

One of the problems that Git has is definitely the conflicts when other developers are working on the same feature or on the same line of code, because when both get commited, the second one tends to have merge conflicts. Luckily, Git shows you that, so you can make decisions like Dr. Wisneski was showing in the lecture.

Monday, July 6, 2026

SWE - Week 2

 Week 2 (CST438)

Summarize what you learned about React this week.  In your opinion, what are the strengths and weaknesses of React

It is my first time learning React. I have been working in the back-end, so I don't really get to see what the front-end does besides what they share in scrum meetings. What I enjoyed the most while writing React features was the ability to see how the back-end is running in the background while the front-end is running separately with the `npm run dev` command, but together they make together an app. Without the front-end an user can't really use an app, and without the back end, the UI acts like decoration but with no functionality. The beauty of it to me is how they depend on each other and how they both make an app function. As far as weaknesses, I think the fact that we need to import external packages and does no thave built-in tools for routing, state management, or API calls, and if a package becomes deprecated this might be time-consuming to keep updating it. Another weakness I see is how React re-renders the interface when data gets updated or when it changes. Sometimes this could be unnecessary when one change can make a whole re-render to load again. Overall, I enjoyed learning React.

Monday, June 29, 2026

SWE - Week 1

Software Engineering - CST438

Week1

What did you expect a course in Software Engineering would cover?   

So I am currently interning at a Defense company as a Software Engineer, and I was so surprised to learn that we were going to be learning Spring Boot because this is what I currently use every day at work, I did not expect that. I am supporting a team in the backend, and I've been learning Spring Boot, OpenAPI, and some of the frameworks that Spring offers. The first lab was the intro to what I do at work, and I am very happy that what we are learning in this class is actually very related to the current industry. With Spring Boot, we can avoid all the boilerplate code and simplify the use of RESTful APIs. At work, we use Kubernetes for deployment, Redis for caching, Kafka topics for data records where producers write the events and consumers read the stream of data. I am looking forward to learning more and collaborating with my teammates.

Monday, April 20, 2026

Service Learning CST462S

 Reflection:

What went well? What would you improve? What was the most impactful part? What challenges did you face? What advice do you have for future SL students?

The results we obtained after we finished the service project hours, is what went well. I was able to deliver a step-by-step manual of how to list and ship items on eBay for the non-profit organization Homeless to Forever. They were very grateful to how much we helped them understand from a non-technical side how to run their shop without having to face so many technological challenges. This goes in hand with this being the most impactful action we did too. They expressed they have been looking for these kind of results for over a year but no volunteer/intern has been able to achieve this. The challenges I achieved were in the beginning of the service project, our supervisor did not have the technological tools and the time to provide us with the work to do, so it was very challenging to follow up with her so we can get hours up to speed and not to fall behind. The best advice I have for future SL students is actually keeping very throughout communication with their supervisor so both parts know each other's expectations.

Monday, February 23, 2026

Week 7

 Week 7 (2/18-2/24)

This week's content had a lot of topics and algorithms to cover. These are some of the concepts I learned this week:

Counting Sort: Count how many times each value appears (frequency), then build the cumulative distribution to place items in sorted order.

Radix Sort (LSD): Sort numbers digit by digit starting from the least significant digit (ones place), using a stable sort each pass.

Dynamic Programming (DP): Solve problems by storing results of smaller subproblems and building up to the final answer.

Coin-Collecting Problem: In a grid, find the maximum coins collectable when moving only right or down using a DP table.

Coin-Row Problem: Choose coins in a row to maximize value without taking adjacent coins

Warshall’s Algorithm: Finds the transitive closure of a graph (reachability: whether a path exists between vertices).

Floyd’s Algorithm: Finds all-pairs shortest paths by updating distances with intermediate vertices.

Greedy Method: Build a solution step by step by always choosing the best local option at the moment.

MST (Minimum Spanning Tree): Connect all vertices in a weighted graph with the minimum total edge weight and no cycles.

Prim’s Algorithm: A greedy MST algorithm that starts from one vertex and repeatedly adds the smallest edge connecting the current tree to a new vertex (weights matter first; alphabet only breaks ties).

Monday, February 16, 2026

Week 6

 Week 6 (2/11-2/17)

For this week, we practiced AVL trees by inserting values and fixing balance with rotations. We did 2–3 trees by inserting keys, splitting 3-nodes, and reading results level-by-level. We worked with max heaps: inserting (bubble/sift up), deleting max twice (swap with last, sift down), and connected this to heapsort and the array/bottom-up heap build method. Finally, we covered hashing: using 𝐾 mod 𝑚, detecting collisions (separate chaining), resolving them with linear probing, and using load factor thresholds to trigger rehashing to a larger table size. Going to office hours has been extremely helpful for me in this class to better grasp the concepts.

Sunday, February 8, 2026

Week 5

 Week 5 (2/4-2/10)

I made a little summary based on what I learned this week's content. I am hoping that this summary helps me to study for the final.

QuickSort:

QuickSort is a divide-and-conquer sort. It picks a pivot, then partitions the list so numbers smaller than the pivot go left and numbers bigger go right. After the first partition, QuickSort recursively sorts the left and right parts.

Partitioning (i and j pointers):

You keep moving i from the left (looking for a number too big) and j from the right (looking for a number too small), in other words, i moves from the left until it finds a value > pivot (too big, belongs on the right). j moves from the right until it finds a value < pivot (too small, belongs on the left). Then you swap those two.

When i and j cross, you swap the pivot into its final spot. 

Median-of-Three Partitioning:

This improves QuickSort when the data is already sorted or reverse-sorted (which can make QuickSort slow). It chooses the pivot as the median of (first, middle, last), then does partitioning using that pivot idea. Also, we can’t use median-of-three when a subarray is size 3 or less.

Binary Tree Traversals:

Traversal is just “the order you visit nodes”:

Preorder: root, left, right

In order: left, root, right

Postorder: left, right, root

Binary Search:

Binary search works on a sorted list. You check the middle value, then go left half or right half depending on whether the target is smaller or bigger. Each step cuts the search space in half, so it’s fast (log time).

DAG and Topological Sorting:

A DAG is a directed graph with no directed cycles.

A topological order is a list of nodes where every arrow goes from earlier to later. If there’s a cycle, you cannot do a topological sort.

Kahn’s Algorithm:

finds nodes with in-degree 0 (no incoming arrows), removes one (using alphabetical order when there are ties), updates in-degrees (depending on incoming arrows), and repeats.

SWE - Week3

 CST 438 Software Engineering - Week 3 Describe what are the good points about using Git for source code management.  What are possible prob...