Introduction to the operation and implementation of virtual machines and managed runtime environments. Can Java be faster than C? Is interpretation ever better than just-in-time compilation? Apart from identifying and cleaning up unreachable objects, what does the garbage collector overhead consist of?
The course is suitable for students who would like to either specialize in this topic, or expand their awareness of how the systems they normally use work.
- Introduction to virtual machines and managed runtimes
- Interpreted execution vs. dynamic compilation
- Speculative optimizations, partial evaluation
- Method-level vs. path-based compilation
- Memory management and object lifecycle
- Aspects of design and implementation of virtual machines
- GraalVM, the Truffle framework and their practical application
The course will alternate between lectures and labs, with lectures covering generic topics and labs focusing on practical problems. The implementation language for the labs is Java. However, only basic knowledge of the most common Java language constructs is necessary.
Credit will be given for:
- 4 programming assignments (20 points maximum for each)
- explained and bootstrapped during labs, completed as homework
- Short “take-home” quiz after most of the lectures (20 points maximum for all quizzes)
The final grade is determined by the percentage of points gained from all assignments as shown in the following table: