What we call “level of abstraction” of any programming language is a measure of the expressive power that that language avails to the programmer: the higher that level, the larger the computational effect of a single statement of any program in that language.
The latter notion provides another, perhaps more direct, intuition of how the level of abstraction can be measured quantitatively: the higher it rises, hence closer to natural language and to the programmer's intent, the farther it gets from the actual operation of the underlying processor hardware.
The execution of one single program statement (i.e., the achievement of the computational effects that it is intended to cause) entails the execution of multiple, possibly very many, individual processor instructions.
With modern programming languages, there always is a one-to-many correspondence between any single program statement and the corresponding sequence of processor instructions.
When the language compiler (or interpreter) transforms the program text into executable binary for the intended processor target, it effectively applies that correspondence. Interestingly, not all that transformation can happen statically, before execution, because a considerable proportion of the required transformations applies to elements of the “program state”, that is, to the machinery needed to cause program-level entities to exist and be operated upon by program execution.
The simplest possible example of such machinery is what is to exist for the abstraction of “procedure call” to be available to the programmer.
The technical name given to that machinery is “run-time support” for the corresponding programming language, shortened to “language runtime”.
Most evidently, very high-level language features such as concurrency and distribution involve highly sophisticated semantics, which is far from primitive to the computer hardware.
Their realization therefore requires the compilation system of the corresponding programming language to be augmented with software libraries dedicated to making the relevant semantics happen at run time.
This class aims at exploring the requirements placed on such runtimes, and their typical operation, considering exemplary paradigms of language-level concurrency and distribution, progressively ranging from single-CPU computers to the Cloud, which covers a very large spectrum of computing abstractions indeed.
Categoria DIPARTIMENTO DI MATEMATICA "Tullio Levi-Civita" - DM / A.A.2025 - 2026 / Corsi di laurea magistrale / SC2598 - COMPUTER SCIENCE (Ord. 2025)