This summer, CST334 was one of the most challenging and rewarding courses I’ve taken. Before starting, I had a general idea of how computers worked, but I didn’t realize the complexity behind operating systems. This class gave me a much deeper understanding of how processes, memory, and concurrency are managed, and how all these components work together.
One of my biggest takeaways was CPU scheduling. Learning algorithms like RR and concepts like limited direct execution helped me see how multitasking is achieved in real systems. PA2, where we implemented scheduling logic, was tough but incredibly satisfying. Virtual memory was another key area. Before, paging and segmentation were just vague terms to me, but through lectures and our programming assignments, I learned about address translation, TLBs, and multi-level paging, and now feel confident working with these ideas. Concurrency was the most difficult but also the most eye-opening topic. Threads, locks, semaphores, and condition variables introduced me to the challenges of synchronization and race conditions.
The group project was a valuable way to apply multiple concepts in a collaborative setting, and weekly journals helped reinforce my learning. I also developed stronger C programming skills and became more comfortable with debugging tools like GDB. I’m walking away with not just technical knowledge but also problem-solving skills I can apply to future projects and internships.
