Lectures: Tuesday, 14:00, S7 (Štěpán Šindelář (Oracle Labs))
Page in SIS: NPRG076
Grading: Graded credit
News
April 15, 2025 — Published fifth quiz and resources for lecture #5.
April 1, 2025 — Published fourth quiz lecture #4.
March 25, 2025 — Published third coding assignment from the Week #6 lab.
March 18, 2025 — Published third quiz lecture #3.
March 4, 2025 — Published second quiz and second coding assignment from lecture #2.
Feb 25, 2025 — Published first coding assignment from the Week #2 lab.
Feb 18, 2025 — Published quiz and resources for lecture #1, created individual student repositories for enrolled students, and the Forum project for course-related communication.
Show all...
About
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 colletor 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.
Topics covered
- 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
Organization
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:
Percentage | Grade | |
---|---|---|
≥ 87% | 1 | |
≥ 73% | 2 | |
≥ 60% | 3 | |
< 60% | fail |
All course work needs to be submitted though your (course-specific) personal repository.
Communication
The course uses a GitLab issue tracker in a dedicated Forum project repository as the primary means of communication.
Please use the Forum for any questions or suggestions related to the course, because it will (most probably) be of interest to other students as well. If there is something that needs to be discussed in private, please open a confidential issue in the Forum.
You should either subscribe to receive notifications about new issues (including course-related announcements) or check the issue tracker regularly.