Courses/Computer Science/CPSC 457.S2016

Jump to: navigation, search

Principles of Operating Systems (Spring 2016)

You may also be interested in the wiki pages for the past versions of this course:

  • Winter 2012
  • Winter 2013
  • Fall 2013
  • Fall 2014

This course is a curiosity-driven cross-layer introduction to the principles and design decisions reflected in modern commodity operating systems with a special focus on the Linux/x86 platform to ground the discussion in real technical detail.

The university calendar entry for CPSC457 describes the course as:

"An introduction to operating systems principles. Performance measurement; concurrent programs; the management of information, memory and processor resources. Prerequisite(s): Computer Science 319 or 331 and one of Computer Science 325 or Computer Engineering 369."

The course overview page is located at:

How This Class is Taught

  • Curiosity - This class is driven by seemingly simple questions about what a computer system is in a practical sense. This is not a class where you blindly memorize charts and pictures drawn by other people. It's a hands-on exploration of what makes digital hardware actually do interesting things for us.
  • Cross-layer - layers of abstraction become boundaries of competence. This class deliberately bridges the semantic gap to give multiple aspects of the same concept, component, or primitive.

Although this courses focuses on Linux, it is not a course on Linux. We will use Linux for practical examples of the principles and concepts of operating systems.

Announcements, Policies, and Metadata

Please read the official Course Outline.

This section includes the syllabus, textbooks, course policies, grading scheme, midterm and file exam policies, and submission instructions.


Communication and grades will be handled through the D2L.



Assignment 1 has now been posted. It is due at 2:00pm on Friday, May 20, 2016. It has a Rubric.

Assignment 2 has now been posted. It is due at 2:00pm on Friday, June 17, 2016. It has a Rubric. It also has a Demonstration Procedure.

  • If you handed in work for assignment 2, you may receive the better of your a2 mark or the average of your a1 and a3 marks. This is to compensate for the technical problems we experienced.

Assignment 3 has now been posted. It is due at 2:00pm on Thursday, June 30, 2016. It has a Rubric.

Exam Schedule

This course will have two exams.

  • The Midterm will be in class on Monday June 13. It will be in ICT 102 to give us more space. We will write the Midterm starting at 9:00 am. We will then take a break and return to normal lecture after that.
  • The Final will be registrar scheduled on Monday, July 4 at 8am in ICT 121. Here is a list of topics that will be covered on the final.
    • The final will be worth 35% of your total grade.
    • You may use a non-programmable calculator and bring a 8 1/2 x 11 page of notes.

Lecture Schedule

Please see the University Academic Calendar for important add/drop dates, holidays, etc.

Courses/Computer_Science/CPSC_457.S2016/Lecture Notes

This section contains the class session notes.

Tutorial Schedule

Here is the (tentative) schedule of tutorial topics.


Links & Miscellaneous Resources

Courses/Computer Science/CPSC 457.W2012/Links and Other Resources

CPSC LXR mirror for this kernel version: [1]

Things We Won't Cover

  • A full consideration of multiprocessor architectures and machines (we only touch on this in the context of concurrency and synchronization)
  • Advanced I/O architectures and multimedia
  • Networking
  • cluster computing
  • other operating systems like *BSD, Windows, OS X, GNU Hurd, or Minix