CS 300 : Operating Systems

Spring 2017
Instructor Arrvindh Shriraman
Office : 4172 Surrey Campus, 9421 Burnaby Campus
Email :
Office hours : Friday (right after class)
T.As: Steven Margerm (smargerm@sfu.ca).
TA Office Hours:
Wed 12:30PM -- 2:30PM ( SC 4050 Lab )

URL: http://www.cs.sfu.edu/~ashriram/courses/2017/CS300/

IMPORTANT Teaching classes only on Friday. Wednesday will be lab day. We have booked the lab in SC 4050 and 4050 for a 2hr slot between 11:30-1:30 (yes it is an extra 1 hr). The TA will be present in the lab during this period and it is in your interest to take the TA's help as much as possible. Use the lab time for comleting your assignments.

What is the class about?

    Are you interested in understanding the architecture of cutting-edge operating systems that you could be programming in the future and what challenges confront this critical (but often hidden) software? This course explores the field of computer operating systems, emphasizing basic operating systems (OS) concepts and design principles. While stressing the fundamental principles behind them, we will discuss the performance and engineering trade-offs in the design and implementation of operating system mechanisms. The idea is to learn not only what operating systems are and how they work today, but also why they are designed the way they are and how they are likely to evolve in the future. This course will cover fundamental OS material such as scheduling and synchronization, multiprogramming, memory management, file system, protection, and security. Additionally, we will touch on a few advanced topics including micro-kernel OSes, virtual machines

FLIPPED Classroom and Labs

Congratulations! By signing up for this course you are one of the early adopters of the flipped classroom model.

What is a flipped classroom ? .

CS 300's Flipped Model: I will be posting videos of the lectures beforehand. I will be presenting extra material and repeating some but NOT ALL the slides on Mondays. I would suggest strongly that you watch the videos beforehand to benefit from the classes.

We will dedicate many of the Wednesday's Class hours towards interactive lab activities and Q/A sessions. On the weeks where wednesdays will be dedicated towards a normal class, you will be informed the previous week .

Show me the videos already....(videos are cross-linked against the slides on schedule page)

By watching the lectures offline at your own convenience ( IMPORTANT: BEFORE THE CLASS), you will have more time to dedicate towards your assignments, which constitute 70% of your class grade.

I have reserved SC 4050 lab between 12:30---2:30 on Wednesdays-- --for the lab (the TA will be present. Use this time wisely to clarify specific questions).


    CMPT 225 and MACM 101.,solid programming skills (C/C++/Java). If unsure whether you have the pre-requisites, talk to the instructor!

    Programming exercises will require the student to implement programs illustrating the principles used in OS design. Basic knowledge of C and C++ programming and the UNIX environment is assumed.

Text Books

You can use either of the following two textbooks. The required reading for each lecture is listed for both texts. If you can find a recent (but not the latest) edition of either text, I think you are fine (although the section numbers for required readings might be different). The two books differ in sytle. Tanenbaum's is a more historical and narrative style of description. SGG is a more algorithmic and cut-and-dry description. Both books do have updated Linux and Windows case studies. SGG provides a larger number of case studies through on-line content.

  • Tanenbaum, "Modern Operating Systems", 2008, Prentice Hall.
  • Silberschatz, Galvin, and Gagne, (SGG), "Operating System Concepts", 8th edition, 2009, Wiley.

This course is mostly about the concepts of operating systems and the principles behind implementing them. A reference book on a real production OS may help you understand the practical aspects of OS concepts and design principles and be extremely useful for your Linux-based projects. However, online code walkers may be your best help. The books below cover version 2.6 of the Linux kernel. The first by Mauerer is the only one to cover the latest scheduler. They will all be on reserve in the library.

  • Wolfgang Mauerer, "Professional Linux Kernel Architecture", October 2008, Wiley.
  • Bovet and Cesati, "Understanding the Linux Kernel", 3rd edition, 2006, O'Reilly. This book is very popular.
  • Love, "Linux Kernel Development", 2nd edition, 2005, Novell Press.
  • W. Richard Stevens, "Advanced Programming in the UNIX Environment", Addison-Wesley, 2005. This is a classic.

Honor Code

For homeworks and programming assignments, students are encouraged to consult each other, the TA, the instructor, or anyone else for that matter. However, the assistance offered or accepted should not go beyond a discussion of the problem and a sketch of a solution. You can use the following guideline: when it comes time for you to write your program or your homework paper, do not use any written material from the discussion.

If you can reconstruct the discussion and complete the solution on your own, then you have learned the material (and that is the objective of this course!). For team projects, you should make sure to identify division of labor in your README. While projects will generally be graded as a team rather than separately for each individual, corrective action could be taken.

When and Where

    Friday (12:30-2:30) Room SUR 2740 @ Surrey.
    Wednesday Lab (4050) (TAs will be present from 12:30-2:30).