Posts

CST 334 - Learning Journal Week 4

 This week's material focused on how operating systems manage memory. We talked about paging, address translations, locality, multi-level page tables, swapping and page replacement policies. Paging is the idea that the OS divides memory into fixed-size chunks so it can manage processes more easily. We practiced translating virtual addresses to physical ones using page tables. This helped me see how the OS creates the illusion that each program has its own private memory space. Average memory access time combines fast hits and slow misses. Multi-level paging came up as a solution to the memory waste of giant single-level page tables. The part I found the hardest was multi-level address translations. I understand the 'tree of pages tables' idea but when I try to manually walk through each level, I lose track of which bit index what. The "aha" moment I had this week was with locality. Once I recognized how often programs loop over arrays or reuse variables, it made s...

CST 334 - Learning Journal Week 3

 This week’s module covered a wide range of topics, including address spaces, physical and virtual addresses, the base-and-bounds translation scheme, segmentation, memory-management design goals, garbage collection, malloc() and free(), automated editing with sed, build automation with make, and simple awk programs. Even just listing these out feels like a lot, and that pretty much captures how the week felt overall—dense, fast-moving, and conceptually challenging. Address spaces and the distinction between physical and virtual addresses made sense on a surface level: physical addresses correspond to real hardware memory, while virtual addresses are what programs think they’re using. But once we moved into base-and-bounds and segmentation, I started struggling. Writing a sentence or two defining the terms was easy. Actually understanding how translation happens is the struggle I am having, such as figuring out what is added, checked, or offset. Simulating the translation process ex...

CST 334 - Learning Journal Week 2

Topics Covered:  1. The fork() System Call:  fork() is a system call used to create a new process - known as the child - which is a nearly identical copy of the parent process. What clicked for me was how the return values distinguish the two: the parent receives the child’s process ID, and the child receives zero. That simple distinction is what allows the same code to “split” into two executing entities. I also learned that every call to fork() doubles the number of running processes, which explains why two consecutive fork() calls result in four processes total. 2. The exec() System Call: while fork() creates a copy, exec() replaces the current process image with a new program. This was initially confusing - why would you create a process only to immediately overwrite it? For example, when a shell executes a command, it first uses fork() to create a child, then the child calls exec() to load the new program, leaving the shell intact in the parent process.  3. Parent vs...

CST 334: Week 1 Learning Journal

This week’s lessons covered several foundational topics that introduced key concepts in operating systems and computer organization. The modules included  Introduction to Operating Systems ,  Computer Architecture Review ,  Linux and the Shell ,  Programming in C ,  Command Line Introduction , and a  Math Addendum . Each topic helped me understand how different parts of a computer system work together and how software interacts with hardware through the operating system. I ntroduction to Operating Systems -   I learned about the purpose of an OS — to manage hardware, software, and resources so that users and programs can run efficiently. It was interesting to see how the OS acts like a bridge between user commands and the computer’s internal functions, handling things like memory management, process scheduling, and file access. This made me realize how much happens behind the scenes when we simply open an app or save a file. Computer Architecture Revie...

CST 349 - Week 8 Learning Journal

Part 1: Review Other Team's Final Video Projects Group 3 - Web Weavers: Long Presentation: https://youtu.be/EUv2vh-8NFg Short Presentation: https://youtu.be/qOHv2pQNABQ The presentation on SB53, California's AI safety Bill, provided solid coverage of the topic by clearly explaining the scope of legislation, its focus on larger AI models, and the requirement for developers to disclose their safety practices and incident response. For the shorter video the graphics used were friendly for the general public and especially children and the video was informative to the point that needed to be addressed. For the longer video, the presentation shows how throughly the topic was researched and covered the main areas for this topic. Both videos showed how well the work was evenly distributed by the voice changes throughout the video. Overall the team addressed the topic and were informative as well as made it engaging to learn.  EduOtter: Long Presentation: https://youtu.be/N5...

CST 349 - Industry Expert Interview

 Post - Interview Reflection Report:  Introduction:  For this assignment, I interviewed Amy Bloch, my current technical lead at IBM. Amy is an accomplished software engineer with extensive experience in leading teams, building complex systems, and mentoring early-career engineers. Before moving into her current leadership role, she spent years working directly on software design and development, which gives her a strong technical foundation that she still relies on today. Currently as a technical lead, she not only contributes to solving technical challenges bit also guides the direction of projects and supports the professional growth of those on her team.  I choies to interview Amy because I respect the way she balances technical expertise with leadership. Working under her has given me a firsthand view of her ability to keep projects on track, resolve challenges efficiently and empower team members to grow. As someone who is still in early paths of their career, I...

CST 363: Final Learning Journal Entry

 Three Most Important Things Learned this Course:  1. SQL Querying and Data Manipulation: Learning how to use SQL to create, query and manage relational databases was the number one thing I learned this course. Writing single-table queries, performing joins, working with subqueries and using view gave me the ability to extract meaningful information from large datasets. I also learned the importance of constraints to maintain data integrity. These were essential skills learned especially since SQL is heavily used in the industry.  2. Database Design and Normalization:  Another key takeaway was the importance of ER modeling in designing efficient databases. By learning how to normalize data and reduce redundancy, I understood how good database design not only saves storage but also improves consistency and scalability. The labs on ER diagrams made it clear how theory directly applies to practical database design.  3. Advance Topics: Indexing, Transactions and Dis...