2022-2023 Sem I

This course introduces virtualization techniques and their usage in cloud infrastructure. Students will learn various approaches towards virtualization and get hands-on experience with a modern systems programming language.

Course Information

  • Prerequisites: COL331 or equivalent.

    Note: The course includes programming assignments and thus expects proficiency with systems programming and debugging.

  • Credits: 3-0-2
  • Slot: AA, Mondays and Thursdays 2-3:15pm.
  • TAs:
    • Abhisek Panda: csz202445 AT cse.iitd.ac.in
    • Abhishrut Omprakash Vaidya: siy217558 AT cse.iitd.ac.in
  • Reading material: Hardware and Software Support for Virtualization. It is not required to purchase the book. We will mostly read papers.

Grading criteria

  • 20% labs (programming + analysis assignments)
  • 25% project
  • 5% quizzes
  • 20% minor exam
  • 30% major exam

Supporting systems

  • Discussions should be done on Piazza. Sending emails is discouraged.
  • Labs will be submitted through Moodle. Grades will also be uploaded there.


Thanks to Mythilli Vutukuru, IITB and Xi Wang, UoW; parts of this course have been inspired by courses made available by them.


  • Audit criteria: 30% or more marks.
  • Ethics: We will employ various methods to catch cheating. Cheating in labs/quizzes will bring zero in that lab/quiz. Cheating twice gets an F in the course.

Late policy

  • To help you cope with unexpected emergencies, you can hand in your Labs solutions late, but the total amount of lateness summed over all the lab deadlines must not exceed 72 hours. You can divide up your 72 hours among the labs however you like; you don’t have to ask or tell us. You can only use late hours only for Labs.
  • 1 quiz in the course can be skipped without penalty.

Tentative topics

We will deeply study a hypervisor written in rust. All the labs and the project will therefore use rust.

  • Getting comfortable with Rust
  • Popek Goldberg theorem
  • Virtualization techniques
    • Software-based virtualization:
      • Full virtualization: Binary translation, shadow paging, ballooning, IO virtualization
      • Paravirtualization: memory virtualization, virtio
    • Hardware-assisted virtualization: KVM, EPT
  • Usefulness
    • Checkpoint/restore
    • Live migration
    • State machine replication
  • What’s new with virtualization?
    • Unikernels
    • Firecracker

Disclaimer: Actual course contents may differ depending on student interest. Reach out to the instructor as soon as possible if there is a particular interest in a topic.

Tentative Schedule

Week Monday Thursday Saturday
1 1 Aug
4 Aug
LEC 1: Introduction.
2 8 Aug
LEC 2: OS Background: Process virtualization
11 Aug
Raksha Bandhan
3 15 Aug
Independence day
18 Aug  
4 22 Aug 25 Aug  
5 29 Aug 1 Sep  
6 5 Sep 8 Sep  
7 12 Sep 15 Sep  
8 19 Sep 22 Sep  
9 26 Sep
Minor exam
29 Sep  
10 3 Oct
Semester break
6 Oct  
11 10 Oct 13 Oct  
12 17 Oct 20 Oct  
13 24 Oct
27 Oct 29 Oct
14 31 Oct 3 Nov  
15 7 Nov 10 Nov  
16 14 Nov