Semester: summer
Lectures: 14:00, S6 (Štěpán Šindelář (Oracle Labs))
Page in SIS: NPRG076
Grading: Graded credit

News

May 19, 2023 — Updated grading and published resources and (final) quiz for lecture #7. The quiz deadline is Tuesday, May 30 2023, 14:00.

May 10, 2023 — The deadline for completing the coding assignment from the Week #13 lab is Tuesday, May 23 2023, 14:00.

May 5, 2023 — The deadline for quiz #6 has been shifted to Tuesday, May 16 2023, 14:00.

May 4, 2023 — Published resources and quiz for lecture #6. The quiz deadline is Tuesday, May 9 2023, 14:00 Tuesday, May 16 2023, 14:00.

Apr 28, 2023 — The deadline for completing the coding assignment from the Week #11 lab is Tuesday, May 9 2023, 14:00.

Apr 21, 2023 — Published resources and quiz for lecture #5. The quiz deadline is Tuesday, April 25 2023, 14:00.

Apr 13, 2023 — Published resources and quiz for lecture #4. The quiz deadline is Tuesday, April 18 2023, 14:00.

Mar 29, 2023 — The deadline for completing the coding assignment from the Week #7 lab is Tuesday, April 4 2023, 14:00.

Mar 23, 2023 — Published setup instructions for lab #3.

Mar 22, 2023 — Published quiz for lecture #3. The quiz deadline is Tuesday, March 28 2023, 14:00.

Mar 15, 2023 — The deadline for completing the coding assignment from the Week #5 lab is Tuesday, March 28 2023, 14:00.

Mar 8, 2023 — Updated information on the bonus task.

Mar 7, 2023 — Published quiz for lecture #2. The quiz deadline is Tuesday, March 14 2023, 14:00.

Feb 21, 2023 — Next lecture will be on March 7 2023.

Feb 21, 2023 — The deadline for completing the coding assignment from the Week #2 lab is Tuesday, March 7 2023, 14:00.

Feb 15, 2023 — Published quiz and resources for lecture #1. The quiz deadline is Tuesday, February 21 2023, 14:00.

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