Managed Runtime Systems

Introduction

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 managed programming languages, such as Python, Java, etc.

In this course we study how managed programming languages are implemented in the managed runtime systems. The course is mainly focused on the Java programming language and the Java Virtual Machine (JVM).

Syllabus

Lectures will take place at A.121 every Monday, Wednesday, and Thursday 14:00-16:00 according to the schedule below. Please note that the schedule is subject to change.

Week # Description Monday Wednesday Thursday Assignment
04/02/2019 1 Introduction & Byte-code interpretation Slides (Course Intro) Slides (VMs Intro) Slides (The JVM) Reading (Interpreters)
11/02/2019 2 Garbage Collection Slides (GC Intro) Paper (Interpreters) Slides (GC Intro2) Reading (G1)
18/02/2019 3 Just In Time Compilation Slides (JIT 1) Slides (JIT 2) Tutorial (G1) Reading (JIT History)
25/02/2019 4 Metacircular VMs Slides (Metacircular) Paper (JIT History) Tutorial (Maxine VM) Reading (Maxine VM)
04/03/2019 5 Metacircular VMs Slides (Truffle) Paper (Maxine VM) -- --
11/03/2019 6 -- -- -- -- --
18/03/2019 7 -- -- -- -- --
25/03/2019 8 -- -- -- -- Reading (JMM)
01/04/2019 9 Memory Models -- Guest Lecture from Dr. Heinz Kabutz Slides (Concurrency) --
08/04/2019 10 Concurrency Paper (JMM) Slides (Java Concurrency) -- Reading (JDMM)
15/04/2019 11 Advanced Garbage Collection + Performance Slides Paper (JDMM) -- Reading (Performance)
22/04/2019 - Easter Holidays -- -- -- --
29/04/2019 - Easter Holidays -- -- -- --
06/05/2019 12 Profiling and Adaptive Optimization Paper(Performance) Slides (Guest: Dr. Kotselidis) -- --
13/05/2019 13 Project Presentations Project Presentations Project Presentations Project Presentations --

Material / Slides

The slides of the course are available in PDF format at https://speakerdeck.com/zakkak.

For the source code (LaTeX Beamer) of the slides you can visit https://github.com/zakkak/Managed-Runtime-Systems-Course.

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?

Summary Submission

A Google form for each paper has been created, please fill it before the beginning of the lecture where we will discuss the corresponding paper.

Projects

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 04/03/2019!

If you want feedback please submit earlier.

Contact

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

Acknowledgments

Guest lectures

2018 -- I kindly thank Dr. Christos Kotselidis for his insightful presentation regarding "The Art of Java Performance" and the exciting live demo.

Inspiration and Material

  1. I would like to thank Mario Wolczko for sharing his material and experiences from a similar course he taught at UC Berkeley.
  2. The original material of his course can be found here.
  3. I would like to thank Aleksey Shipilёv for the creation of the "JVM Anatomy Park" that provides a set of great examples and anecdotes to toy around in tutorials.