CS 851 - Virtual Execution Environments
Department of Computer Science
University of Virginia
Spring 2007
Day/Time: Mon/Wed 12:30 PM
Location: Olsson 236D

Instructor: Kim Hazelwood
Office hours: After class (or by appt.)
Office location: Olsson 209
Email: hazelwood+cs851@cs.virginia...
CS 851 HOME
INSTRUCTOR
SYLLABUS
CLASS SCHEDULE

Virtual execution environments (VEEs) are becoming ubiquitous, and are changing the way computer scientists think about computer architectures, operating systems, programming languages, and compilers. In this course, we explore the state-of-the-art in VEEs, their implementation, and their myriad of applications -- from security to compatibility to program introspection. The structure of the course exposes students to the latest research in the area (by reading both seminal and emerging papers) and also enables hands-on experience via a significant project component.

Course Topics.

  • Dynamic Optimization Systems
  • Binary Translation Systems
  • Program Instrumentation
  • Adaptive Optimization
  • Profiling
  • Phase Behavior
  • Trace Generation
  • Code Caches
  • Persistent Translations
  • Advanced Applications
  • Advanced Tools

Prerequisites

Graduate standing and a strong programming background are both required. A solid understanding of computer architecture and compiler design will also be assumed.

Grading

  • 30% - Class Participation
  • 30% - Assignments
  • 40% - Term project

Class Participation

As most of our class time will be spent discussing the latest research papers, class participation is crucial. You will be evaluated on the following components of your class participation:

  • Regular participation in class discussions
  • Contribution to the class wiki prior to lecture
  • Research paper summaries

Assignments

There will be 3-4 programming assignments throughout the semester. The primary purpose of these assignments is to re-enforce the concepts discussed in lecture. The assignments also provide you with hands-on experience with various VM tools. You may elect to use a subset of these tools in your term project. There will also be a writing component in this class that will be realized in the form of abstract paper summaries throughout the semester.

Term Project

A term project will make up a large portion of your grade. You may work in groups of 1-2. Your project is expected to be both novel and significant. Your project grade will be determined as follows:

  • 20% - Project proposal
  • 15% - Status report
  • 15% - Final in-class presentation
  • 50% - Final conference-quality report

Very Highly Recommended Text

James E. Smith and Ravi Nair. Virtual Machines, Morgan-Kauffman, Boston, MA, 2005.

Cooperation

Please feel free to talk with other class members about the programming assignments, but always turn in only your own work (e.g., never copy someone else's code!). It is in your best interest to attend the lectures and to read the assigned papers. For the term project, again feel free to talk with other class members.