The "Operating Systems" course is included in the Computer Science undergraduate program of almost all universities. It is quite surprising, however, that teachers rarely agree on what should be taught in such courses. Actually, there even isn't a widely agreed definition of what an operating system is.One of the broadest definitions we ever seen has been given in [2]: The operating system is the collection of functions which make available computing services to people who require them. Therefore, the operating system must fill the gap between the computer and the services required by the people using it. However, what kind of services should we consider? Isn't writing a document with a word processor a computing service that people require? And what about playing a strategy game, or browsing the Web?Much more restricted definitions of operating system have been given. For example, in [6] we read: The purpose of an operating system is to provide an environment in which a user can execute programs. The primary goal of an operating system is thus to make the computer system convenient to use. A secondary goal is to use the computer hardware in an efficient manner. Most Operating Systems courses implicitly adopt this definition or a similar one, because it allows teachers to stick to a well-defined set of canonical topics. Actually, two kinds of operating systems courses may co-exist: one addressed to system administrators and one to system programmers. In the first case, the course should teach how to make use of the many existing features inside an OS, how to tune it up properly, and how to set up proper environments for the users. In the second case, the course should explain how the functions are implemented and which are the main issues and trade-offs to be considered while implementing them.In fact, the first kind of course is seldom included in an undergraduate Computer Science program: this is likely due to the fact that operating systems are quite different from each other, thus the experience gathered on one of them, say Sun Microsystem's Solaris, cannot be readily transfered to another one, say IBM's OS/390. We thus concentrate in the rest of this paper on the second type of course, the standard elective fourth year course of an Undergraduate program in Computer Science.