Date Modified Tags course


The aim of this course is to introduce students to the world of managed runtime systems. Managed runtime systems are the ones responsible for executing interpreted languages. Such languages are usually compiled to some intermediate representation instead of native machine code, this intermediate representation is then parsed and executed by the corresponding managed runtime system. In this course we study how managed programming languages are implemented in the managed runtime systems, and more specifically the Java programming language. We also focus on how automatic memory management works, and how just-in-time compilers optimize code on the fly.


Lectures will take place at A.121 every Tuesday 14:00-16:00 and Thursday 12:00-14:00.

Week     #     Description     Tuesday     Thursday     Assignment
05/02/2018     1     Introduction: What is a managed runtime system     Slides (Course Intro)     Slides (VMs Intro)     --
12/02/2018     2     Bytecode Interpretation     Slides (The JVM)     Slides (GC Intro)     Reading (Interpreters)
19/02/2018     3     Garbage Collection     Paper     Slides (GC Intro2)     --
26/02/2018     4     Just In Time Compilation     Slides (JIT 1)     Tutorial (G1)     Reading (G1)
05/03/2018     5     Just In Time Compilation     Slides (JIT 2)     Paper     Reading (JIT History)
12/03/2018     6     Metacircular VMs     Slides (Metacircular 1)     Paper     Reading (Maxine VM)
19/03/2018     7     Metacircular VMs     Slides (Metacircular 2)     Tutorial     --
26/03/2018     8     Concurrency and Memory Models     Slides     Paper     Reading (JMM)
02/04/2018     -     Easter Holidays     --     --     --
09/04/2018     -     Easter Holidays     --     --     --
16/04/2018     9     Concurrency and Memory Models     Slides     Paper     Reading (JDMM)
23/04/2018     10     Advanced Garbage Collection     Slides     Paper     Reading (Performance)
30/04/2018     11     Advanced Garbage Collection     Slides (Moved to 30th April)     Slides     --
07/05/2018     12     Profiling and Adaptive Optimization     --     --     --
14/05/2018     13     Profiling and Adaptive Optimization     Slides     Slides     --

Skipped lectures

The lecture of 01/05/2018 will be rescheduled to the 30th of April 30/04/2018. The lectures of 08/05/2018, and 10/05/2018 will be rescheduled.

Material / Slides

The slides of the course will be available in PDF format at

For the source code (LaTeX Beamer) of the slides you can visit

Marking Scheme

Midterm   0%
Reading Assignments   35% (7x5%)
Final exam   0%
Project   50%
Class participation   15%

Reading Assignments

During this course you will be asked to read a number of scientific papers covering the topics at hand. In total you will be asked to read 7 scientific papers and you will be assigned to deliver a short summary for each of them. We will discuss each paper in the classroom to better understand them and answer any questions you might come up with.

Summary format

Your summary should answer the following questions:

  1. What is the key point of the paper? (If it is the survey, what are the key techniques it presents?)
  2. What did you like the most in the paper?
  3. What could be improved in the presentation/content of the paper?
  4. Do you have any ideas on how to improve the presented idea/technique?
  5. On a scale of 0-5, with 5 being the most positive, how would you rate the paper?


You can either work alone or form a team of two. For your project you can either focus on JIT compilation or Garbage Collection.

You shall choose and propose a project on your own. The project proposal should answer the following questions:

  1. What do you find interesting in the project?
  2. What do you expect to learn through this project implementation?
  3. How are you going to demonstrate the success of your project?

You are strongly encouraged to work on Maxine VM for your project, but projects on openJDK (or other VMs, even non-Java VMs) will be also accepted.

Projects will be developed on github and will be based on the latest release of the corresponding VM you will chose to work on.

Project proposal deadline

Please submit your project proposals by 15/03/2018!

If you want feedback please submit earlier.


You can contact me directly via e-mail or through the course's mailing list hy446-list |at|


I would like to thank Mario Wolczko for sharing his material and experiences from a similar course he taught at UC Berkeley. The original material of his course can be found here.