Posts

Week 56

 This week, we didn't have any quizzes or homework. Our whole goal this week is to study for the Midterm on Monday. Content-wise, we went over merge sort very briefly, but this week I'm spending all my time studying and brushing up on past concepts that I wasn't too good at before. I need to go over algorithms, GCD, algorithmic problem solving process, data structures such as arrays, linked lists, stacks, trees, graphs, and sets. I also need to review graph traversal and dynamic programming. I plan to review by going over quizzes, puzzles, and old lectures.

Week 55

 This week had a lot of new content and some review content from my Data Structures & Algorithms course at De Anza. For review, I reviewed Breadth-First Search and Depth-First Search; they were such a struggle for me at community college, but the knowledge was helpful in understanding them better a second time. We also went over Brute force string matching, exhaustive search, and the divide and conquer algorithm design. The puzzles this week were also super challenging; I was nowhere near the correct ballpark for either solution, which I usually am.  Overall this week wasn't too bad and I need to start focusing on the midterm it's creeping up. 

Week 54

 It's been a little over 1 year since I started my journey at Monterey Bay, which is crazy to think about.  This week, we learned about a lot of stuff, including notations for algorithm analysis, definitions of time efficiency notations, nonrecursive algorithms, and more. One thing that stumped me a lot during the readings was the understanding of the difference and how to remember the difference between big O, theta, and omega. I had to use ChatGPT to break the concepts down a lot and explain any misconceptions I had/ reinforce any ideas I got right. For the first time, I got one of the puzzles on my own, the 4-gallon puzzle, which wasn't too bad. I almost got the racing one down, but I said 6 instead of 7, forgetting about the other cars from group A.

Week 53

Hi blog! It’s been awhile. I’ve been so busy with school, work, and life. The holidays are over so my work isn’t as bad. I’m currently in the process of moving out of my life so huge is a little rough but I’m getting through it. We started our first week of Algorithms. The professor posts readings, lectures, puzzles, quizzes, and homework. I really enjoyed the puzzles I think they’re fun and really get my brain going. Particularly the fake coin puzzle, the best I could come with is putting half coins on one side and half on the other. But that lead to 3 different searches. I also struggled with figuring out if I’m going to do C++ or Java for the course, so far I’ve done 1 of each and I honestly might just do C++. I’ve done a lot of Java here at CSUMB. It would be a good refresher because I haven’t thoroughly used C++ since De Anza. The 2 homework’s were challenging and really had me thinking. The quiz was also difficult. It has been fun learning about algorithms, graphs, and brushing u...

Week 32

 Wow... It really is the last week of CST 334. I vividly remember the week when we went through and downloaded Docker. Using PowerShell and terminal seemed like something straight out of a movie, but learning low-level stuff like that is key to success as a computer scientist. The PA codes were also a hurdle to get accustomed to. Coding tasks are always daunting, but doing it in C was even more of a pain. But once again, languages where you're in charge of memory allocation are very important and equally important to learn. Over the course, we learned about processes and how you manage them. We had a lot of emphasis on memory virtualization, and then we had the midterm. Then, concurrency and persistence. And as I'm writing this, I'm preparing for the upcoming final exam. As for the final exam, I will try to be more cognizant of the time. On the previous midterm, I had been surprised by the time, as I thought I had more. I did all the big questions to realize I only had 12 m...

Week 31

 This week has been hectic as I am in a totally different continent, fifteen hours ahead of my normal time zone. But I packed accordingly so I’ve been able to keep up on lecture readings and notes. From this weeks reading, I have learned that a file system is a crucial component of an operating system, responsible for organizing and managing data from a disk. The very simple file system serves as a foundational model to understand core concepts. File systems utilize inodes, or index nodes to store metadata about files, such as permissions, size, and pointers to data blocks. Inodes can employ multi-level indexing, including direct, indirect, and double/triple indirect pointers, to affinity handle files or varying sizes. Directories are structured as special files containing mappings of human-readable names to inode numbers, allowing the system to locate files through path traversal. Free space is managed using bitmaps (for inodes and data blocks), ensuring efficient allocation and d...

Week 30

       This week's material deepened my understanding of concurrency control and how it can get out of control. Semaphores emerged as a synchronization tool, functioning as both locks and condition variables. Their atomic operations, sem_wait() and sem_post(), enable thread coordination, enforcing mutual exclusion in critical sections or guaranteeing execution order. Improper usage risks deadlocks, as seen in the dining philosophers problem, where circular wait conditions arise unless lock acquisition is carefully ordered.     The readings from this week also highlighted non-deadlock concurrency bugs, which happen a lot in real-world systems. Atomicity violations, like a thread interrupted between checking and using a pointer-expose flawed assumptions about uninterrupted execution. Order violations, where threads rely on unchecked execution sequences, further underscore the need for synchronization primitives to enforce correctness. Deadlocks remain insidio...