CS 1217 Operating Systems

Ashoka University

Spring 2021

General Information

Textbooks and Readings

  1. Operating Systems: Three Easy Pieces; Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau v1.0. Textbook is freely available online.

  2. xv6, a simple, Unix-like teaching operating system, Russ Cox, Frans Kaashoek, Robert Morris, v11. The draft of the book is available online.

Class Policies


All communications regarding the course should be addressed to the course staff mailing list. Individual communications with instructors / TAs should be avoided. Emails to individuals cannot be guaranteed a response.

The course staff will push out information for reading material, assignments, information etc. using Google Classroom only. There will be no email based communication.


The following is a tentative guideline for the grading policy and may undergo a change.

  • Midterm Exam - 20%

  • Final exam - 25%. The final exam will be cumulative of all the course contents of the semester.

  • Programming Assignments and Labs - 30%. There will be approximately three programming labs requiring significant effort, to be done in teams of two students. In addition, there will be individual programming assignments.

  • Surprise, in class quizzes - 20%

  • Zines, or educational videos: 5%

Late Submissions

You are expected to submit the assignments before the assigned deadline. We will enforce the following policies.

  1. Each team has 3 days of total slack time over the course of the semester. The decrement in slack time will happen at the granularity of 1 day. Once the 3 days are up, any submitted assignments will not be graded. This policy will again be enforced strictly.

  2. There will be no extensions for individual assignments, unless for medical emergencies.


We know that you are involved in activities outside of academics, and that is primary reason for providing slack time. The pandemic has also upended life as we used to know it in many forms. However, like the rest of the world, we all are on a road to recovery. It is more important now than before that we all try to get back to a semblance of a "normal" semester as we can. As a result, by and large, no extensions will be granted, unless for medical emergencies. In case of such an emergency, you are expected to send an email to the course staff mailing list prior to the assignment / exam deadline. If deemed appropriate, an extension may be provided.

In order to be fair to the entire class, and to students who might not be involved in other activities outside academics, there will be no excused absences for participating in internal or external events.

Note: If there are any questions regarding the policies, please contact the instructor. The TAs are responsible only for enforcing class policies.

Makeup Exams / Extra Credit

There will be no makeup mechanism for surprise quizzes. They are, by definition, a surprise.

There will be no makeup exams for either the mid-semester, or the end semester exam. If you miss any of the two exams for a medical emergency, your marks in the other exam will be scaled for the one that you missed. No additional exams will be administered.

There will be no extra credit to make up for missed exams, assignments or quizzes. Everyone is expected to do the homeworks that have been assigned to the entire class.

Programming Assignments and Labs

There will approximately be three programming labs for the course. All the programming labs will be done by a team of two students. The two student team will be considered a single unit for all academic integrity purposes. The team members can (and are expected) discuss the assignment among themselves. However, any submitted code or written assignment should be done either by the individual student, or by the team of two students for programming assignments. This means that when you are writing and debugging your code, you are expected to be doing it with your team partner, and no-one else. Given the nature of the course, there might be similarities between this year's and last year's assignments. However, please rest assured that we have save all the submissions from all previous years. Your submitted code will be compared against the code submitted from previous years, as well as to any solutions found on the internet.

If there are any questions regarding what constitutes plagiarism and what doesn't, please contact the instructor. "Oh-I-didn't know this was counted as plagiarism" excuses in the middle of the semester will strictly not be entertained.


We have zero tolerance for cheating -- if your class rank in the assignments is significantly different from your class rank in the exams, only your rank in the exams will count towards your grade. We know you're juggling multiple activities and the assignment deadline may not always be favorable. You are advised to start with your assignments as soon as they are handed out to avoid last minute mistakes and temptations to plagiarise.

We will pass all code submissions through MOSS. Any evidence of academic dishonesty will result in a fail grade for the entire course, no exceptions. This will also be reported to the Academic Office as an Academic Integrity Violation, which goes on your permanent student record.


There is no mandatory attendance. However, you are expected to attend all the lectures. There will be material covered in class that is not present in textbooks. In addition, some portion of the lectures might be used for discussions. It is in your best interest to attend the lectures as they happen, and get their doubts clarified during the discussions, rather than waiting till the end to watch lecture recordings.

The instructor reserves the right to cold call on any student who has joined the live lecture to elicit student participation. You don't necessarily need to provide a correct answer to the question being posed, but it will be expected that everyone at least attempt to provide an answer.

Lab Hours

The lab hours should be used by all the teams to work on programming assignments. TAs will be around to help answer any questions that you have, and help you make progress with assignments. Attendance for the lab hours is compulsory by both the team members.

Course Material

Lecture recordings will be made available through the Google Classroom page for the course. Annotated slides and other reading material will be linked on the class webpage.

Laptop/Device Use (for in-person lectures)

We will follow Prof. Shriram Krishnamurthi's policy. TLDR; screens are a no-no unless explicitly permitted.

Class Schedule



  1. VM Image (ova file) to be used in class can be downloaded here. Documentation to get started, importing the VM image into VirtualBox and getting started with xv6 can be located here.

  2. Download VirtualBox here.

  3. Decent resource to learn C.

  4. Quick intro to bash.

  5. Intro to ELF format.

  6. Intro to x86 stack.

  7. xv6 printable codebase.

Interesting Readings

  1. The UNIX Time Sharing System, Dennis M. Ritchie and Ken Thompson


This course borrows a material from a number of sources. The instructor gratefully acknowledges inputs for the development of the material from Prof. Mythili Vutukuru (IIT Bombay), Prof. Mainak Chauduri (IIT Kanpur) and Prof. Debadutta Mishra (IIT Kanpur). Slides, exercises and notes are used from a number of similar courses taught by Prof. Mythili Vutukuru (IIT Bombay), Prof. Mainak Chauduri (IIT Kanpur) and Prof. Debadutta Mishra (IIT Kanpur), Prof. Sorav Bansal (IIT Delhi), Prof. Adam Belay (MIT), Prof. Frans Kaashoek (MIT), Prof. Margo Seltzer (Harvard), Prof. Geoffery Challen (UIUC), Prof. Eddie Kohler (Harvard) and Prof. Remzi H. Arpaci-Dusseau (Wisconsin-Madison).