Skip to main content

Operating Systems Summer 2019

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

Flipped Model: I will be posting videos of the lectures beforehand. I will be presenting extra material and going over some, but NOT ALL the slides. I would suggest strongly that you watch the videos beforehand to benefit from the classes.

Show me the videos already….(videos are cross-linked against the slides on syllabus 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 60% of your class grade.

Prereq

CMPT 225 and MACM 101.,solid programming skills (C/C++). 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.

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.

Instructor

Arrvindh Shriraman

Office Hours: Thursdays 12:30-14:30 Thursday TASC1 9241

Teaching Assistant (please read FAQ page for email etiquette)

Office hours: ASB 9840 and 9804 (Tuesdays). 9838 (Thursdays) 5-6. Starting May 13th.

Name: Navid Rahimi@sfu.ca
Emails: navid_rahimi@sfu.ca

Name: Xiangpeng Hao@sfu.ca
Emails: xiangpeng_hao@sfu.ca

Discussion Board

Google groups (preferred medium)

on Coursys

Time and place

Tuesdays 14:30-16:20 SSC-B9200, Thursdays 14:30-15:20 SSC-B9200 May 6, 2019 to Aug 2, 2019

Textbook

No required textbook. Online readings provided in schedule page.

List of reference books

Grading

Submit homework source code and check your grades on Coursys

  • Five programming homeworks. Due dates: TBA (60% total)
  • In class midterm: Date: June 18th ASB 9200 (20%)
  • Final exam: TBA Location: TBA (20%)