Operating Systems

CS 301 · IIT Gandhinagar · Semester I, 2018–19

CS 301 is an introduction to operating systems, organised around the three parts of the textbook: virtualisation of the CPU and memory, concurrency, and persistence. Every lecture links its slides and, for most lectures, the class recording. Labs and homework are hands-on work in C and Python on Linux.

Instructor
Prof. Nipun Batra
Email
nipun.batra@iitgn.ac.in
Lectures
Tuesday, Thursday and Friday, 11 am–12 noon, AB7/102
Labs
Wednesday
Teaching assistants
3 TAs
Textbook
Operating Systems: Three Easy Pieces (free online)
Course VM
Ubuntu VirtualBox image

Lectures

Questions

Which textbook does the course follow?

Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, which is free online. The course follows its three parts, and many lab and homework questions come from its chapters.

What software do I need?

Linux, either native or in a virtual machine, with GCC, GDB and htop, and Python 3 from Anaconda. The course provides an Ubuntu VirtualBox image.

How is homework submitted?

As a typed PDF uploaded on the form, named {branch}_{roll_number}_{name}.pdf, with all code linked as secret GitHub gists. Deadlines are at noon and are hard: the form closes and there are no extensions. See Homework.

Is there a project?

Yes. Project ideas are collected in a shared spreadsheet, a demo or a video has to be shown in class, and projects were graded in rounds. See Project.

Where is the code shown in class?

In the code folder: process API examples, scheduling and memory simulators, and thread examples, many of them from the textbook's own code.

References

Textbook:

  • Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces (free online)

Further reading:

  • Dennis M. Ritchie and Ken Thompson, The UNIX Time-Sharing System
  • Maurice J. Bach, The Design of the UNIX Operating System
  • Andrew S. Tanenbaum, Modern Operating Systems
  • W. Richard Stevens and Stephen A. Rago, Advanced Programming in the UNIX Environment
  • Michael Kerrisk, The Linux Programming Interface

Course material:

Teaching assistants

  • Chanda
  • Subisha
  • Chamanvir