Philosophy

This course will be managed differently from most you have taken.  We will be treating it more like a seminar than a traditional course.  There will be a core of material that we all learn together.  There will also be a number of topics that individual students learn on their own and present to the group as a whole. 

For the core material, we will be reviewing the main hardware and software features necessary for constructing a modern multi-user, multi-programming operating system. We will also review the major components of operating systems, such as processes, file systems, and so forth as they are presented in standard textbooks.  We will then dive into Unix and uncover how these components are actually implemented in a real operating system.

The non-core material will be handled by students learning and presenting various topics.  For example, how Unix creates processes might be assigned to one person who finds resources that explain this procedure, who locates the section(s) of the source code that accomplish this, and then who prepares and presents his or her findings to the rest of the class in a clear fashion.

There are a number of reasons for approaching the class this way.

bulletwe can get more done in the given time frame
bulletwe can all learn more than the instructor knows by spreading teaching and learning responsibilities around
bulletthe department head job will likely cause some discontinuities that make this approach more appropriate

This is actually a time-honored approach to a graduate course when new directions are taken.  As graduate students you begin the switch from being just students to becoming peers with your professors as well.  In other words, you begin to become colleagues in the pursuit of new knowledge yourselves.