Virtualization and Cloud Computing (CS695)

Virtualization and Cloud Computing
Instructor: Mythili Vutukuru (mythili @

Course Overview

Virtualization and Cloud Computing (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.

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

Related courses: Links to other related courses for which I have made lecture videos available:

YouTube playlist with all videos

Lecture# Topic Video Slides References Programming Assignments
1 Introduction to the course video slides
2 Review of concepts from operating systems video slides
3 Techniques to design virtual machine monitors video slides
4 Hardware-assisted CPU virtualization in KVM/QEMU video slides Programming Assignment 1
5 Full virtualization via dynamic binary translation video slides
6 Memory virtualization techniques video slides
7 I/O virtualization techniques video slides
8 Paravirtualization in Xen video slides
9 VM live migration video slides Programming Assignment 2
10 VM checkpointing and cloning video slides
11 Containers: namespaces, cgroups, frameworks video slides Programming Assignment 3
12 Introduction to the cloud video slides
13 Cloud storage: key-value stores: Dynamo video slides
14 Cloud storage: semi-structured data storage: Bigtable video slides
15 Cloud storage: application-specific optimizations: Haystack video slides
16 Cloud storage: caching: Memcache video slides