Operating Systems was an interesting course in my fourth semester at university. It was slightly challenging towards the end when the list of algorithms we had to keep in mind suddenly became very long, but it was interesting nonetheless. The main reason I liked this course was because the concepts made proper sense to me. But the problem came in application, I was unsure how to use the theory in the practical questions when the exact variables given were not clear to me. In other words, I found it difficult to correlate the questions to the theory.
In particular, I was most confused with the memory paging algorithm where the memory is organized in a hierarchical structure. There were few concrete formulas and too many different types of questions which I found fairly confusing. One of the other topics I was confused in was mutex and semaphores. The questions from this topic were of two types: the first was insert the mutex/semaphore to ensure the satisfaction of some constraints, the second was to check if the given code satisfies some constraints. These questions needed a lot of practice in order to be able to see the different possible scenarios of context switching.
Of course another slightly less significant problem was my careless calculation errors, which I have always had trouble with, but which posed a problem here because of the extensive calculations involved in this subject. For example, we would be asked to calculate the time taken for a cache cell to be replaced when using the LRU(Least Recently Used) replacement algorithm. Many times I would miss a decimal point or copy the wrong numbers from the question. However, practice made me confident enough to trust my calculations, but the main problem of application still remained.
I did a lot of research, and re-watched the video lectures in order to try and find out hints on the application of the concepts. The video lectures helped because the professors taught the course very well, but I was still not fully confident. I realized that the problem I faced which is in my opinion the worst kind, where the concepts themselves make sense but applying them is difficult. The natural conclusion that followed is that I needed more practice. So I decided to re-solve the tutorials, and this is where I made the most progress. I was able to pick up the hints from the questions and I was able to solve most of them.
Operating Systems also had labs which were quite interesting as they were closely related to the theory, and showed real applications of it. I had fun doing them with my peers, and we used to help each other a lot in the labs. The lab assessment was also quite unique as it was an oral assessment to be done in pairs. Overall the labs were an important aspect of the course and made it more interesting.
For me, this course confirmed that if a topic is interesting, studying it flows naturally. I enjoyed finding out more about the topics I was weak in as I was interested in them.