|
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.
|