Introduction to Operating Systems

Course staff

Instructor: Alexandra Fedorova. (You can call me 'Sasha').
Office hours:TBD. For now talk to me after class or send me a private message on Piazza to arrange a time to meet.

Teaching Assistants:

  • Ben Leicht
  • Bill Li
  • Elisa Pan
  • Seamus Xie
  • Stevenson Yan
  • Syed Araf Imam
  • Theo Nguyen
  • Theo Siemens-Rhodes
  • Vi Kankanamge
  • Yibo Chen

How to contact the course staff

Please contact us on Piazza only. You can find the link to enroll in Piazza on Canvas.

Labs and office hours

Our labs are designed to help you complete the assignments. They are more like office hours rather than labs. You are welcome to attend any of the labs, all of the labs, or none at all. TAs will be there to help you with assignments, but there is no new material presented and we are not tracking attendance. We will hold in-person labs and one virtual labs on Discord.

Lab Schedule

TBD

Learning outcomes

By the end of this course you will:
  • Understand key operating system concepts, such as resource virtualization, protection and concurrency.
  • Be very comfortable navigating around the OS161 source code -- a teaching operating system highly resemblant of BSD.
  • Have implemented crucial parts of the kernel infrastructure, such as synchronization primitives, processes and file tables, system calls and virtual memory.
  • Be very comfortable with kernel development tools, such as common editors (emacs, vim), code-browsing tools (e.g., cscope), a debugger (gdb) and a source control system git.
  • Have enough confidence to hack a real operating system.

Grading formula

The following formula will be used to assign your raw mark for the class. The raw mark usually translates into your final letter grade, though sometimes we curve the marks or adjust the marks based on your contribution to the team projects.
  • 60% Programming assignments. There will be 6 programming assignments. A1 is worth 5%, A2-A5 are worth 10% each. A6 is worth 15%.
  • 20% iClicker and online quizzes.
  • 20% Code review exam.

How we grade assignments

A large portion of assignment grades will be allocated to code quality. That's right, in addition to running tests to see if your code does what it's supposed to do, the instructors will read your code to evaluate other aspects of its quality. This means that even if your code passes all the tests, you may not get a 100% mark if your code is poorly documented or if it contains other markers of "bad" coding style. On the positive side, this also means that if your code did not pass the tests, you can still get some marks for code quality if you followed good coding practices. Use this document as a guideline for writing high-quality code.

What is the code review exam and how to pass it

The purpose of the code review exam is for you to demonstrate that you are comfortable with the OS161 development environment and that you understand and can explain the code you wrote for the assignments. You can get an automatic pass for the exam or you will need to have an individual session with the professor at the end of the term.

You can receive an automatic pass for the code review exam (with the maximum score) if you demonstrate the knowledge of the OS161 source base by answering your classmates' questions on Piazza or by providing correct and substanital answers to OS161-related questions in class. Further more, TAs have the discretion to assign you an automatic pass if they observe your mastery of OS161 during labs/office hours. If you do receive an automatic pass, we will post your code review exam mark on Canvas before formal code review exam sessions are scheduled.

If you don't receive an automatic pass, you will need to attend a 1-1 session with the professor (in-person or on Zoom) where the professor will ask you to demonstrate your OS161 work environment and source code. The professor may ask you to build OS161, run a debugger or show your source code and explain how it works. The professor would ask you only about the source code you wrote. If you work on all assignments by yourself and if you are completing a fair share of work in team assignments, passing the exam is trivial. If you are cheating and not doing the work -- it is nearly impossible. If you are honest and work on assignments yourself, even if you are struggling, passing the oral exam requires no preparation.

The code review exam is usually pass or fail: you either get 20 or 0. There are very rare exceptions to this rule and most people pass the exam. We have had very few cases of students who failed the exam, and almost all of those students were also caught cheating on assignments. Basically, just don't cheat!


If you are caught cheating, your code review mark will be set to zero.

Rules on completing assignments

  • Assignments 1-3 must be completed on your own.
  • Assignments 4-6 must be completed in teams of two. This document provides guidelines on working in teams.
  • You cannot submit the code written by someone else, except yourself and your partner.
  • Submitting someone else's code constitutes cheating and will not be tolerated.
  • You get a total of 7 late days for assignments 4-6. No late days for Assignments 1-3.

Textbooks

During the course we will read articles from these online textbooks:

Policy on cheating

Cheating is not tolerated. You are to write the code for assignments and to answer the code-reading questions by yourself. This means that you must write all the code from scratch, using only what is available in the OS161 code that is given to you. More precisely, you cannot take someone else's code that contains the answer, modify it and submit it as your own. We will use a highly effective system that easily catches code similarity (even if you rename functions and reorder statements), and that is very proficient and catching cheaters. We practice zero-tolerance policy on cheating. If you are caught cheating, your case is reported to the University and you may fail the course and suffer other negative consequences.

We will do our best to help you get through the course on your own. We understand that this is a very challenging course and there will be very few people (ever) who will turn up perfect solutions to all assignments by the deadline. If you work hard, and put lots of concerted and earnest effort into this course you will get a decent grade. Trust us, hard work will pay off. Cheating will not.

How to ask questions

Please ask all your questions during labs, class, office hours or on Piazza. We will not respond to questions posed by email, with very rare exceptions. We will reward those who ask good questions and respond in a helpful way to questions posed by others.

Read the following guides on asking questions: If you abuse the forum by being rude, offensive or by engaging in behaviour that can be described as harassment you may get disciplined in the same way as you would by misbehaving in the classroom. Hiding behind a Piazza alias is not an excuse for being obnoxious. See UBC policy on unacceptable behaviour.

What to have in class

  • A laptop with your OS161 code
  • Your mobile device with the iClicker Reef app
  • A name tag to set on your desk that looks like this, with your name written in large bright letters.

Hybrid learning: in-class and on Zoom

Hybrid mode means that I will be teaching in a physical classroom for as long as my own health and provincial health orders allow, while simultaneously running a Zoom session, so that any of you can join remotely. If you choose to attend remotely, you must join the Zoom session during the time that the actual class is running. This is very important, because we will use many real-time quizzes (in lieu of long written midterms) and you can't make them up if you are not attending.

To join Zoom, log on to Canvas, click on Zoom on the left menu, and you will see a list of scheduled meetings. Click on the link and join.

Here are some rules around using Zoom:
  • It is entirely up to you if you would like to attend in person or on Zoom. I will not penalize you if you are not physically present. All that matters is that you are able to take iClicker quizzes in real time, and you can do so via the iClicker Reef app (there was a separate announcement explaining how to set that up). So if you just don't feel like getting out of the house on a rainy morning or simply prefer an online option, it is entirely okay to attend via Zoom.
  • If you are not feeling well, I encourage you to attend via Zoom. We are still in the midst of a global pandemic, and you will protect yourself and others by staying home if you have any cold symptoms.
  • If you are joining on Zoom, join with your real name as spelled out on Canvas. If you provide OS161-related answers in class, you may earn an autopass on the oral exam. So we need to know your real name (as on Canvas) to track your participation.
  • Even if you are in the classroom you may choose to run the Zoom session. Why? If you are uncomfortable speaking up in class you can post your questions there instead.
  • Please complete the Zoom survey on Canvas. We will use Zoom breakout rooms for people who are joining online, and I need to have your Zoom account emails to make that work.

Equity, Diversity, Includsion

ECE is committed to placticing Equity, Diversity and Inclusion. ECE has an EDI.I committee whose goals are to improve equity, diversity and inclusion in the ECE Department, and support the UBC Indigenous Strategic Plan. The committee welcomes feedback from all students, and can be contacted by emailing help@ece.ubc.ca or via an anonymous suggestion box.

Land acknowledgement

This course is held on the UBC Point Grey (Vancouver) campus, which sits on the traditional, ancestral, unceded territory of the Coast Salish Peoples, including xʷməθkʷəy̓əm (Musqueam) First Nation, Squamish, Tsleil-Waututh, Stz'uminus, and Stó:lō First Nations. UBC is implementing its Indigenous Strategic Plan, taking a leading role in the advancement of Indigenous peoples’ human rights. To learn more about the Faculty of Applied Science’s role in building upon the Indigenous Strategic Plan and committing to Truth and Reconciliation, please visit: https://apsc.ubc.ca/EDI.I.