COMP 310/ECSE 427


Carl Tropper
Office:112N McConnell
Phone:(514) 398-3743
Office hours: Tuesday,Thursday : 12-1:30, McConnell

Teaching assistants

1.Arash Nourian
Trottier 3130 (office hours)
Office hour: Wednesday, 12:30-1:30
e-mail: arash.nourian@mail.mcgill.ca
2.Hariharan Natnasirhamani
McConnell Engineering Building 107(Distributed Simulation Laboratory)
Office hour:Friday, 11:30-12:30

What is the course about?

Viewed from the outside, an operating system (OS) is an interface for the user of a computer to the hardware which actually comprises the computer. Its job is to allow the user to make use of the hardware without actually acquainting himself with the details of its operation. Hence high-level abstractions for such functions as the reading and writing of files are necessary for someone to be actually able to use a computer. Another way of saying this is that the user is presented with a virtual machine to make use of. However, the OS also has the fundamental job of managing the hardware, i.e. providing access to the many programs which compete for the hardware (processors, disks, memory) in an efficient and fair way.

Operating systems have a long and interesting history from the first batch systems to our present generation of personal computer OS's, distributed OS's, and "specialized" systems such as real-time and embedded systems. They continue to evolve and be the subject of active research.

Major topics to be covered in this course are:

Disclaimer It is assumed that any student taking this course can program in C, or is willing to learn C. One reason for this is that OS internals are written in C. There is some supplementary material available on-line (see below) which is intended to provide a refresher for those of you who have been primarily programming in Java. The course itself is systems-oriented. Accordingly, there will be a fair amount of programming in the form of assignments, which will comprise a large (50%) portion of the grade.

What do I gain from this course?

An understanding of how an extraordinarily complicated piece of software, which runs all computers is built, along with some understanding of how the OS has affected other areas of programming. Hands on experience through programming exercises will make this real.

Reading materials for the course


Operating Sytems,third edition, by Andrew Tanenbaum The author is a well known expert in the field, having written a stripped down version of UNIX (MINIX) for pedagogical purposes. Strangely enough, MINIX led to the development of LINUX. The book is available in the bookstore. You can also get copies from Amazon.

Other texts

  1. Operating Systems:Design and Implementation by Andrew Tanenbaum and Woodhull This text emphsizes the description of MINIX, so that students will have a concrete view of what the code in an OS really looks like.
  2. Operating Systems Concepts by Silberschatz,et al. Known as the dinosaur book because of the art work on the cover, this has become a standard text for OS courses.
  3. Operating Systems: A Design Oriented Approach by Crowley. Emphasizes the design of an OS, as the title proclaims.

Other Books

  1. The Mythical Man Month:Essays on Software Engineering by Fred Brooks. One of the original designers of the OS 360, Brooks wrote a classic on what works when building a large software system.
  2. Understanding the Linux Kernel by Bovet and Cesati. An excellent desription of what is in the Linux Kernel
  3. Advanced Programming in the UNIX Environment by Stevens and Rago. How to write programs in C which use the Unix call interface and standard C library.


  1. Unix and Beyond: An Interview with Ken Thompson by Cooke et al. One of original designers of UNIX, Thompson gives his thoughts about where the field is going
  2. On Building Systems that will fail by Corbato. Actually, a Turing award lecture. Main point is-keep it simple, since complex systems will eventually fail.

There is a detailed list of references at the back of the text for each of the chapters in the event that you wish to pursue some of the material in greater depth.

Class schedule

An approximate schedule is to be found at schedule. By approximate, I mean that I can't guarantee that I will cover all of the material in the schedule. Problems for each of the chapters are included in the schedule.

Course Evaluation

Course projects

To be found at Course Projects

Lecture slides

To be posted when the lecture is given at Lecture slides Do yourself a favor-read the text. You will gain a lot more then taking the short cut.


Answers, statistics and the dreaded curve.