Tuesday, July 1, 2025

CST370 - Week 1

With this week wrapping up, I have completed the first week of the Design and Analysis of Algorithms class. There was quite a bit of reading, and the information is somewhat dense, but I've been managing so far. Alongside our readings, we usually have some puzzles, which I honestly enjoy. They can be fun and sometimes confusing, but overall, I find them good. The programming homework has been fairly relaxed, which is nice given the reading load, though the quiz was quite tough. This week's programming assignment was a simple program to determine whether a user's input is a palindrome, and I wrote my program in Java.

In terms of the material, we have had a basic introduction to algorithms, covering topics like Euclid's algorithm for calculating the GCD and other methods for finding the GCD. I learned a bit about reading pseudocode in the context of algorithms, which initially seemed confusing but became clearer as I learned more. We briefly covered sorting and searching algorithms, then moved on to graphs, including unweighted and weighted graphs, and learned about adjacency matrices and lists, along with lots of related terminology. The graph section wasn't difficult to understand, but there is a lot of terminology I still need to refer back to. The most challenging part for me was algorithm analysis, specifically determining time complexities and identifying basic operations. For some reason, this took me longer to grasp, and I still don't have a complete understanding yet.

It's been a challenging first week, and I'm still working on fully grasping some of the terminology and concepts, but overall, I'm enjoying the course so far.

Thursday, June 19, 2025

CST462S - Service Learning Experience

With the first half of my Summer semester now coming to a close, I am submitting my final assignments and preparing for the upcoming class in the second half. Reflecting on my time in Race, Gender, Class in the Digital World, I found this course both enjoyable and, at times, a bit stressful.

As part of the service learning assignment, I had the opportunity to work with a nonprofit organization as a web developer. This was an excellent experience for my professional growth. The first week was challenging; there was a lot of information to absorb during a short orientation, and I was unfamiliar with navigating and working in WordPress at the time. However, after the first week, I felt confident and comfortable using the platform, solving issues, and even assisting other web developers on the team. That said, I did encounter issues with code from previous developers, which required additional time to fix.

If I could suggest one improvement to the program, it would be a more structured orientation to help new service learners get up to speed faster. One of the most rewarding aspects of the experience was being able to help and answer questions from a fellow developer, which made me realize how much I had learned in a short time.

For future service learning students, my advice would be to manage your time wisely and not approach the experience with the mindset of just doing the bare minimum to earn credit. I completed 34 hours, even though only 25 were required, because I wanted to make the most of the opportunity. Treat it as a valuable chance to build skills and gain experience.

Thursday, December 12, 2024

CST334 - Week 8

Write what you learned this eighth week in CST 334

Topic: Persistence

Well, time has flown by, and I’m already in my final week of my operating systems class. There were no assigned readings this week, but we do need to study for the final exam. A big part of the material for the last two weeks has been on persistence in operating systems. As I mentioned last week, persistence, in the context of operating systems, refers to the ability of storage to maintain a state—meaning that if a device is unexpectedly shut off, the data remains intact and is maintained. In a sense of life, persistence also means moving forward despite difficulties. We’ve encountered challenges, whether with lab projects or understanding complex concepts, but you don’t give up when you struggle; you keep moving forward to better yourself.

CST334 - Week 7

Write what you learned this seventh week in CST 334

Topic: Persistence

This week, we covered a critical area of operating systems—persistence. The readings focused on how the operating system interacts with I/O devices, particularly highlighting DMA (Direct Memory Access) and PIO (Programmed I/O). DMA allows data transfers between devices and main memory without the CPU's direct involvement, freeing it up for other tasks. In contrast, PIO requires the CPU to handle each data transfer, which consumes CPU time and limits its ability to perform other operations simultaneously

We also discussed the role of hard disk drives and RAIDs in maintaining data persistence. Persistence refers to the ability of a storage system to retain data even when the system is powered down. Hard disk drives achieve persistence by storing data magnetically on platters, ensuring that the data remains accessible even if power is lost unexpectedly. RAIDs offer additional persistence through redundancy, protecting data from failures by storing duplicate copies across multiple disks. For example, in RAID 1, data from the first drive is mirrored, or duplicated, to the other drive. This setup ensures that if the primary drive fails, all your data is still backed up on the second drive.


Thursday, December 5, 2024

CST334 - Week 6

Write what you learned this sixth week in CST 334

Topic: Semaphores

This week, we continued learning and explored the topic of semaphores and their use in synchronizing multi-threaded applications. In our lab, the goal was to become familiar with semaphores, use them for synchronization, and solve the producer-consumer problem. This was done by tracking available buffer slots and ensuring mutual exclusion using semaphores. Overall, I found the lab interesting, as it deepened my understanding of how semaphores manage shared resources in multi-threaded programs.

Thursday, November 28, 2024

CST334 - Week 5

Write what you learned this fifth week in CST 334

Topic: Concurrency

This week in class, we began to learn about concurrency and managing multiple threads running concurrently within a program. The challenge with running multiple threads simultaneously is that they can potentially interfere with each other. We observed this in our lab on multi-threading, for example, when multiple threads accessed a shared variable. This interference leads to race conditions, causing the program to produce unpredictable results and making the program indeterminate.

A few strategies we explored in our reading to address this issue include using locks to protect resources, ensuring that only one thread can access the data at a time, and keeping resources separate from one another. While this approach prevents multiple threads from modifying resources while they are in use by others, there are still potential issues. For example, with spin locks, a thread may spin indefinitely if it cannot acquire the lock because it is continuously denied access to the resource, which can lead to starvation.

Thursday, November 21, 2024

CST334 - Week 4

Write what you learned this fourth week in CST 334 

Topic: Memory Virtualization

This week in the course, we continued to delve further into memory virtualization and how we manage memory. In the lab, we worked with the FIFO (First-In-First-Out) page replacement strategy, a method used to manage page entries in memory. Paging is a memory management technique that divides both logical memory (virtual memory) and physical memory into fixed-size blocks called pages and frames. The logical addresses are divided into pages, which are then mapped to available frames in physical memory using a page table.

The FIFO strategy does not account for whether a page has been accessed recently or frequently. Instead, it strictly evicts the page that has been in memory the longest. On the other hand, the LRU (Least-Recently-Used) approach takes into consideration the recency of use, replacing the page that has not been accessed for the longest time. 

CST489/499 - Week 16

This marks the end of my journey in the CSUMB CS Online program. I will officially graduate and receive my bachelor's degree in Computer...