But the issues at hand are larger than just the design, care, and feeding of an operating system. Many of the "hot" programming opportunities available today (web based programming, embedded systems, etc.) involve the implementation of software tools and systems that can respond to asynchronous events. An asynchronous event, loosely defined, is one that is not solicited and cannot be easily anticipated. For example, a "web hit" is an asynchronous event from the perspective of the victimized server. We will study operating systems concepts as exemplars of systems design because operating systems techniques are relatively well-established and because (unlike many of today's popular software products) an operating system must function properly for a computer to be useful in any way. An operating system, therefore, is just one example of a larger class of systems with which you may already be familiar.
Programming these asynchronous systems is much different from programming other kinds of applications. Asynchrony breeds race conditions which are often difficult to detect and debug. Detecting and debugging them, however, is both a skill and an art form. Thus, part of what you are learning at 4:00 in the morning the day your assignment is due is how to be an artist, illustrating the breadth of human experience that this class encompasses.
Furthermore, performance is typically a high-priority for systems programs making the applicable techniques fairly low-level. At the end of the class you should have an intuitive "feel" for the rigors of systems implementation (particularly with respect to operating systems) and you should be able to distinguish that feel from your other programming experiences.
A big part of systems design concerns the performance tradeoffs between competing implementation strategies. It is important to be able to reason about the observed performance of your programs. At the end of this class, you should also have some notion of how to evaluate the observed performance of systems you encounter.
If you are considering a career that both involves programming computers and provides the possibility for rapid advancement in today's job market, or you are contemplating a career as an academic with an emphasis on systems, you will need to understand asynchronous systems concepts and implementation strategies. The over-arching goal of this class is to provide you with a basis for such an understanding and to use operating systems design and implementation to develop that basis.