So what’s this course about?
Have you ever wondered
- What the meaning of life is?
- Or can you ever really trust your senses?
- Or maybe you wondered if we have gotten rid of all mythologies and ideologies?
Well, unfortunately, this class is not going to help you answer any of those questions (Hint: Answers are: I have no idea, nope, and definitely not).
But lucky for you, this class is going to help you answer the following questions:
- How can my machine run this many programs simultaneously while only having a limited amount of resources (like CPU, memory, etc.)?
- How does my machine know when I insert a USB device? And then how does it know that I inserted a mouse and not a keyboard?
- What happens when I write to file or create a new folder?
- What is up with that damned blue screen of death that has haunted you since childhood?
- How do I summon daemons? And what are they used for?
- When is it okay for a parent to kill its children? (and no this class has nothing to do with witchcraft or satanic rituals)
In short, in this class, you will be exposed to the foundations of how machines run and how they manage their resources efficiently (and sometimes, not so efficiently).
Why should I care?
I know by now that your brain is going
why do I care about how resources are managed? I just wanted to write Java or Python, do machine learning, and earn the big bucks.
I totally understand and sympathize with you, that was my initial reaction as well. First, before I try to convince you why this class is important, I would urge you to take an hour of your time to watch James Mickens’ keynote talk at the Usenix Security 2018 conference; it is hilarious but very informative and insightful.
Now, back to our question. Imagine the following scenario: You have graduated from Rose, are now a famous software developer, and are now on your way to buy your first house - How exciting! You find a nice antique house that you like and decide to remodel it. You have full confidence in your interior design and remodeling skills, you can afford all the fancy furniture and appliances you like, but you don’t really like thinking about the foundations of your house. So, deciding to be practical, you just decide to ignore the foundations, decide that they work as they work, or in other words, “the stuff is what the stuff is, brother!”.
So now you’re living in your dream house. Everything seems to be working correctly, you turn on the faucet and the water flows, you plug things in and boom, they’re powered on. That is all great until one day, you start hearing weird noises, your pipes are creaking, your power is going crazy, and now your fancy Jacuzzi is moving on its own. Well, what happened? By ignoring that foundation, you were able to build a wonderful house that worked for a while, but then started falling apart.
This is why I believe learning operating systems is important. The goal is not for you to become a kernel developer (though I’d be super happy if you would and we will be friends!), but the aim is for you to understand what’s happening behind the scenes in your workstation. I strongly believe that answering the questions above is crucial for you to become a well-versed software developer that can write good and well-founded software.
I personally absolutely LOVE this class and am very passionate about this subject. I hope that by end of this quarter, I can convey some of my appreciation for this subject to you. When I learned the concepts in this class, I gain an entire new appreciation for programming and the magic that happens behind the scenes in our machines. Quoting one Reddit user,
A big brain moment for me was realizing how callbacks work and how I didn’t need to write a main loop or anything like a regular program. Just set your hooks and let the OS call them.
Why are there so many assignments and deadlines?
It is one thing to learn concepts about operating systems, it is another to apply them in practice. – Your instructor
Our joint aim in this class is to get you to learn, experience, and appreciate the concepts the define what an operating system is and does. That is we complement our theoretical (sometimes abstract) concepts with hands-on assignments and a project that will solidify those concepts in your mind. In other words, you will spend a lot of time learning by doing.
As for deadlines, if you are anything like me when I was in college, without set deadlines, you’ll procrastinate and play video games until you are running short on time and things have piled up (who knew that time doesn’t stop when I am playing video games \_(ツ)_/ ). So deadlines are to help you stay on top of your work and avoid falling behind and finding yourself in a pickle. For policies and guidelines, see our official course syllabus at the top right corner.
Annoying your professor
Students in Sections 1 and 2, if you have made it this far reading this document, you get the privilege of overloading my (Mohammad’s) email inbox with a funny drawing of an elephant.