CSE 591, Spring 2014: Special Topics in Computer Science: Virtualization

Latest Announcements

2/7: Lab 1 posted
1/7: Initial schedule and syllabus posted

See all announcements RSS 2.0 feed

Course Info


Virtualization is an increasingly ubiquitous feature of modern computer systems, and a rapidly evolving part of the system stack. Hardware vendors are adding new features to support more efficient virtualization, OS designs are adapting to perform better in VMs, and VMs are an essential component in cloud computing. Thus, understanding how VMs work is essential to a complete education in computer systems.

This course will cover how PC virtual machines (VMs) are implemented, as well as survey recent research into virtualization. The course will be organized as a mixture of paper reading and implementation. Students will implement their own hypervisor, and extend the hypervisor as an open-ended course project.

Topics to be covered include: memory management, paravirtualization, hardware virtualization, OS-level virtualization (containers), security, and advanced research topics.

Course Themes:

Reading and Understanding Research: The course should teach you how to read research papers critically, and scientific/engineering issues generally.

System building experience: The course's programming assignments should expose you to virtual machine monitors (VMMs, or hypervisors) and their programming environment.

Course Organization and Workload

The course consists of readings, discussion, a major project, and a final exam (and possibly pop quizzes). Half of the credit for the course will be for the major project (implemeting a VMM), and half will be for participation and exams (which cover the reading material and class discussions). Three quarters of the class meetings will be for paper discussions, the other quarter will be for discussion about low-level implementation details related to the class project. In order to fully understand the reading material and have interesting class discussions, I recommend you read each paper at least twice, preferably more than a day in advance so that it sinks in.

This course does not require a textbook. The primary course material will be papers posted on this site (accessible only to computers on the stonybrook.edu domain).


Abhinand Palicherla implemented most the JOS VMM, as well as core JOS enhancements to facilitate virtualization. Amit Arya ported JOS to amd64, and Tao Zhang contributed guest video support. Of course, we are also indebted to the many contributors to the baseline JOS code.

This course website was created using the Coursegen toolkit written by Dave Andersen and Nick Feamster. Thanks!

Last updated: 2015-07-16 09:54:51 -0400 [validate xhtml]