This week we are all going to be talking about some of our favorite classes that we’ve taken at USC. One of my most interesting classes has been CSCI 350: Introduction to Operating Systems. It’s one of the most famous classes that CS majors have to take because it’s known for being a lot of work. I ended up taking Operating Systems over the summer, which helped to make the workload very manageable.
Although the structure of the class varies a little bit from professor to professor, the basic goal is the same. You start out with a very bare bones operating system that can only run one program at a time and is not very efficient in terms of memory. Then, over the course of 4-5 assignments, you add in different features to make the operating system more modern such as multiprogramming and virtual memory. For example: here were the four assignments that I did when I took the class:
- Airport simulation: We had to build a simulation of passengers arriving to an airport, checking in, going through security, boarding, etc. We had to simulate actions for passengers, check in clerks, security workers, baggage handlers, and more. This essentially was an exercise in multithreading to prepare for future assignments.
- Multiprogramming: We had to configure the operating system so it could run multiple programs at a time – in this case, multiple airport simulations at once!
- Virtual memory: Now we had to make the operating system be able to run a program that was larger than physical memory – it would go grab bits of code as needed.
- Distributed computing: We then configured the operating system to be able to run several different client applications that were accessing shared resources on multiple servers. The picture below depicts our setup; we split up each of the airport employees (passenger, manager, etc.) into their own program and had them access shared data on the servers.
While this class was challenging, I really enjoyed it because I probably learned more in this class than any other. It was also really useful to get to know more about how computers work at a basic level because this helps you write more efficient code later on.
Hope you all have a good week!Meet Ellen