CS 695: Virtualization and Cloud Computing

Spring 2021

CS695
Instructor: Mythili Vutukuru (mythili @ cse.iitb.ac.in)


Course Overview

CS695 is a graduate-level course open to undergraduate and postgraduate students. A previous course on operating systems (CS347/CS333 for UGs, CS744 for PGs) is a hard pre-requisite. The course also involves significant hands-on programming, so an interest and aptitude for systems programming is highly desirable. Please talk to the instructor if you do not meet these criteria but still wish to take the class.

This course covers basic and advanced concepts related to the virtualization and how it enables the latest revolution of cloud computing. You will understand the various virtualization paradigms of full virtualization, para virtualization, and hardware-assisted virtualization, for CPU, memory, and I/O. You will also learn about containers and related concepts. The later part of the course will cover various advanced topics related to virtual machine live migration, modern cloud storage frameworks, and so on. The programming assignments in the course are designed to reinforce the concepts learnt in class.

Grading Policy: The weightage for the various components of the course is as follows: mid-semester exam: 20%, end-semester exam: 40%, three programming assignments: 40% (15% + 15% + 10%)

System requirements: You must have access to a machine with a native Linux installation to solve the programming asignments in the course.


Schedule

Lecture# Date Topic Video Slides References Evaluations
1 Jan 7 Introduction to the course video slides
2 Jan 11 Review of concepts from operating systems video slides
3 Jan 18 Techniques to design virtual machine monitors video slides
4 Jan 18 Hardware-assisted CPU virtualization in KVM/QEMU video slides Programming Assignment 1, Due Feb 13th (Saturday) 11:55 pm
5 Jan 25 Full virtualization via dynamic binary translation video slides
6 Jan 25 Memory virtualization techniques video slides
7 Feb 1 I/O virtualization techniques video slides
8 Feb 1 Paravirtualization in Xen video slides
9 Feb 8 VM live migration video slides Programming Assignment 2, Due March 27th (Saturday) 11:59 pm
10 Mar 8 VM checkpointing and cloning video slides
11 Mar 15 Containers: namespaces, cgroups, frameworks video slides Programming Assignment 3, Due April 17th (Saturday) 11:59 pm
12 Mar 22 Introduction to the cloud video slides
13 Mar 22 Cloud storage: key-value stores: Dynamo video slides
14 Mar 29 Cloud storage: semi-structured data storage: Bigtable video slides
15 Apr 5 Cloud storage: application-specific optimizations: Haystack video slides
16 Apr 12 Cloud storage: caching: Memcache video slides