So this is an advanced course in operating systems, NOT a course in advanced operating systems. Most of this is state of the art circa 1985-1995. Still potentially worth learning, but the class title can be severely misleading. I was expecting cutting edge thought on modern OS design.
Given that mainstream OSes still need to catch up with the use of Xerox Star architecture in terms of safety and developer tooling I find that many students still have a lot to learn outside the UNIX mentality many of these courses have.
And this course does exactly that by having some Mesa related classes.
I don't know how course numbering works there but a course with a 122 number here would be a first-year, non-gen-ed class. If you look at the syllabus, most of the material is pretty basic so I'd also question the idea that it's an advanced course.
just randomly looking at it.... http://cgi.di.uoa.gr/~mema/courses/mde518/papers/ousterhout-... seems like it's far too opinionated rather than educational, should keep to the job of explaining the problems of threads, not to put people off them by saying they are bad. That kind of thing can end up being burnt into a students mind. Better to promote other solutions, like abstractions over concurrency or languages with better abstractions. I'd hate to think we are training people to avoid concurrency when we are getting more and more multi processor systems
That's a classic paper to read for an operating systems class. Generally in an advanced OS class you read papers and discuss them critically. The value is in the discussion.
Here is an example syllabus from Stanford's CS240: https://web.stanford.edu/class/cs240/old/sp2014/. You can see that this paper is listed, along with a paper that states the opposite opinion ("Why Events are a Bad Idea").
I think the paper is slightly too opinionated but remember it was 1995. No stm in haskell yet. No .net or javar threading libraries. (Ok... first version of java just released.) I wonder what nice abstractions existed then?
Perhaps the papers view was balanced for its time. Also maybe context switching was super expensive on a 286 or whatever was available then.
Windows and I believe Linux use message loops for UI and do fine. You can use callbacks for up bound stuff. Probably ok for a lot of applications.
As a fellow embedded developer who has read most of the materials, I will tell you this:
The operating systems class you took should have covered the core concepts in the papers.
In my opinion, most of the papers talk about how those core concepts came to be in the golden age of Operating Systems Research when it was booming in the same way AI/Machine Learning/Big Data is booming post 2000s. Read it at your leisure if you are interested in the backstory.
That said, the class is of teaching critical reading, critical thinking, presentation, proper discussion and critiquing of academic papers: just that the topic happens to be Operating Systems.
If you are interested in RTOS (real-time OS) courses I recommend checking edX for the expected September 2016 arrival date of a followup to this course:
The excellent quality of the above course - which includes programming actual hardware (you have to invest about $50 for components) - raises the expectations for that upcoming course.
.
EDIT
The page is already up for the new course "Real-Time Bluetooth Networks - Shape the World":
> In this lab-based computer science course, explore the complexities of embedded systems and learn how to develop your own real-time operating system (RTOS) by building a personal fitness device with Bluetooth connectivity (BLE).