COMP 790: Virtualization

Syllabus and Policies

  1. Bulletin Description
  2. General Course Info
  3. Instructor Info
  4. Textbooks
  5. Course Description
  6. Target Audience
  7. Prerequisites
  8. Goals and Key Learning Objectives
  9. Course Requirements
  10. Grading
    1. Examinations
    2. Reading and Discussion
    3. Project
  11. Course Policies
    1. Lateness
    2. Collaboration vs. Cheating
  12. Disclaimer
  13. Acknowledgements

Bulletin Description

Topics in Computer Science is a graduate seminar. The course has variable content and may be taken multiple times for credit.

General Course Info

Term: Spring 2017
Department: COMP
Course Number: 790
Section Number:138
Time: MW, 1:25-2:40 PM
Location: FB 007

Instructor Info

Name: Dr. Donald Porter
Office: Sitterson 362
Email: porter at cs dot unc dot edu
Phone: 919-590-6044
Office Hours: MW 2:40 - 3:40 PM, or by appointment.


There is no textbook for this course. The course is based on a collection of journal and conference papers that describe the history and state of the art in virtualization. The list of papers and schedule will be posted on this site. You must read the papers before class. We will provide most papers online; those that are only available in hardcopy will be provided about a week before they are needed.

Course Description

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.

Target Audience

The course is geared towards graduate students in computer science and advanced undergraduate computer science majors. Virtualization is an essential theme in computer systems courses, as well as modern programming practice. This course will help students become conversant in the underlying techniques and major ideas underlying virtualization.


  1. This class has no official prerequisite. However, I highly recommend first taking COMP 530, the undergraduate operating systems course. It is necessary background, as we'll read a lot papers quickly without much time for catching up on the basics. The course assumes an understanding of topics in operating systems such as synchronization, virtual memory management, scheduling, and file systems. If you have not taken 530, or a comparable course elsewhere, be prepared to review a lot of background on your own.
    If you've taken an equivalent course elsewhere, and it includes actual, substantial programming experience in any Unix kernel, please speak to me first to get an approval to take this class. In some cases, substantial low-level systems programming experience in industry is sufficient. If you do not have experience with kernel programming, you may not take this course.
  2. Undergraduates who have taken 530 and done well may take this course.
  3. The course project will be largely independent. You will be responsible for learning the tools you need to complete the project you select. Likely tools required for the projects include C programming, basic UNIX commands, especially including debuggers and compilation tools.

If you do not fulfill the above requirements, you should consider very strongly taking COMP 530 instead of this course.

Other recommendations which would greatly help you in this class:

If you are a CS major or graduate student and registration is full, please come to class and let me know if space still isn't available after the first week.

Goals and Key Learning Objectives

Students will learn how to read and critique research papers in systems, as well as understand foundational techniques in virtualization. Students wil also learn how virtual machines work by implementing a simple virtual machine monitor, or hypervisor.

Course Requirements

The course is taught in an interactive discussion style, as well as using hands-on, active learning during class time. Although there planned topics to discuss, students are expected to come to class prepared to discuss the reading material, both asking and answering questions. Attendance is expected, but will not be recorded.

To help students review and synthesize the readings, students will turn in a brief review of the reading for each class.

Students are also expected to complete roughly 4 programming assignments. The programs will be written in the C programming language on a departmental Linux server and will each emphasize some aspect of operating system or hypervisor design and implementation.


The course will be graded with +/- grades (e.g., A, A-, B+, etc.).

The final grade will be determined as follows: The raw scores obtained by all students on each assignment and exam will be standardized for that particular assignment or exam either (at my discretion) by converting them to percentile scores, or else by applying a linear transformation to map the scores to a standard [0, 100] scale. A weighted sum of the resulting standardized scores will then be formed (with weights as shown below) to obtain a composite score for each student.

Finally, the composite scores will be ranked, and I will apply a subjective method of my choice to determine the cutoffs for each grade category. Absolute performance standards, the distribution of composite scores, information derived from late homeworks, and class participation are factors likely to contribute to this decision.

Re-grading: after each grade is given out, you will have a chance to discuss it with the grader and the instructor. You must first discuss your grade with the grader, within the first 48 hours after the grade has been handed back. It's highly recommended that you take some time to review your entire grade before discussing it with the grader. After discussing your grade with the grader, if you wish, you may discuss it with the instructor during office hours or by appointment. If, after discussion with the grader or instructor, you ask for an assignment to be regraded, the entire assignment will be regraded. Your grade can be improved or harmed by regrading.


There will be no exams in this course.

Reading and Discussion

Most of the work in this course consists of reading journal and conference papers. Most of the papers we read will be good, and all are influential. We will cover one to two papers at each class meeting. This class will be primarily discussion based. Active discussion will (hopefully) give you a non-trivial understanding of the material.

It is essential for everyone to arrive to class well prepared to participate in (or lead) discussions. If you skim papers and space out during discussion, you are doing your colleagues a disservice by lowering the level of discussion. The other problem, of course, is that individually you will learn much less if you follow that approach. The assignments and grading, therefore, are focused on creating an atmosphere where everyone comes to class well prepared for discussion.

Class time will not be used to rehash the material in the papers. Instead, it will be used to highlight the important points and discuss some of the more interesting features. There will be as much as 10-15 hours of reading per week. Do not take this course unless you are willing and able to do a lot of reading.

Paper critiques. We will read about 20 "core technical" papers in this course (plus a number of "background" and "professional development" papers.) For each of the core technical papers, you will prepare a (approximately) 1-page written critique (here is a template). This critique must be typeset (no handwritten critiques will be accepted) and must be turned in before the start of the class that discusses the paper. You may skip up to 4 critiques with no grading penalty.

Class participation. The class will provide ample opportunity to get involved in the discussions, and if you do not regularly participate in discussions, you will not get as much out of the class as you could. Your class participation will be based on three factors: (1) the instructor's assessment of whether you were regularly involved in the discussions over the course of the semester, (2) turning in acceptable critiques as described above, and (3) there might be several pop quizzes on the reading assignments over the course of the semester. If you turn in a critique (e.g., claim to have read and understood the paper) but your quiz indicates that you don't understand the paper, we will lower your class participation grade. (Note that if you don't turn in a critique for a class, you are "exempt" from taking a quiz for that class.)

Written homeworks. We may assign additional written homeworks that cover basic experimental skills useful for studying operating systems (cache simulation, network simulation, and simple statistics and data analysis). Unless otherwise noted, the homeworks will be done individually.

Course project

This course requires a substantial systems implementation project, that will give you experience in building, booting and running a hypervisor.

These assignments should demystify the hypervisor, convincing you that, like an OS, the hypervisor really is just a program. Sometimes puzzling system behavior can be understood and worked around by reading and understanding the source code of the hypervisor. Why do some workloads run slowly in a VM and others do not? There are several distinct possibilities that you can see in the code. These assignments should also give you a some practical knowledge, for example allowing you to add new hypercalls to KVM.

Course Policies


For every day late an assignment is handed in, you will lose 1/3 of a letter grade (A, B, C) per day per team member. So if you have 3 members and turn in the assignment a day late, the highest grade you will earn is a B. The maximum penalty for lateness is a D.

Collaboration vs. Cheating

I strongly encourage you to discuss the papers and the homeworks with anyone you can. That's the way good science happens. As a professional, you should acknowledge significant contributions or collaborations in your written or spoken presentations.

The paper critiques should reflect your understanding of the paper. It is not acceptable to turn in a summary if you have not made an honest effort to read the paper. If you don't have time to read a paper before a class, make use of one of your skip credits. Never read another student's summary before you have turned in your own.

Unless otherwise stated, the homeworks must be done individually. Programming assignments/projects may be done individually or in pairs. You may orally discuss the homeworks with anyone, but you may not look at anyone else's code and you may not allow anyone else to look at your code.

Intellectual dishonesty can end your career, and it is your responsibility to stay on the right side of the line. If you are not sure about something, ask.

I am very serious about not tolerating academic dishonesty. In a graduate class, when I am able to establish that academic dishonesty has occurred, I generally assign the student in question a grade of "F" for the course and forward the particulars to the Graduate Program Director (GPD), and ask that the Graduate Program Director initiate proceedings to dismiss the student from the degree program. Besides, we're here to learn. Do you want to get a good job and impress your peers with your programming skills, or get fired by your boss for failing to get the job (or worse, get sued for copying someone else's work).

Intellectual dishonesty can end your career, and it is your responsibility to stay on the right side of the line. If you are not sure about something, ask.


The professor reserves to right to make changes to the syllabus, including project due dates and test dates. These changes will be announced as early as possible.


Portions of this course design, organization, policies, syllabus, web design, etc. came from Emmett Witchel and Erez Zadok.

Last updated: 2016-12-24 14:10:22 -0500 [validate xhtml]