
\chapter*{Introduction}
\addcontentsline{toc}{chapter}{Introduction}

Historically, efforts for improving computer processing speed were focused on increasing
computer processors' working frequencies. This is the easiest and the most straightforward
way of increasing performance of computation - doing more work sequentially during the single time unit.

However, this method is reaching its physical limits, which is somewhere around \textit{6 GHz} in normal
environmental conditions. For this reason, more than one processor has to be involved in the computation
process to further improve its performance. To make such parallel computation possible computer program
has to be specially designed - by a programmer or by an intelligent compiler, which creates the final
executable program from the program description in some programming language.

The process of designing parallel program is challenging and error-prone for the programmer. Unfortunately,
it is also generally impossible for a compiler to parallelize each program. However, it is possible to design
compiler which can help to parallelize program written in a programming language with some specific syntactic
and semantic restrictions.

This diploma thesis contains proposition of the programming paradigm and the programming language which allows
automatic parallelization of the programs written according to the paradigm in the proposed language.

In the \hyperref[chap:motivation]{\textit{Motivation chapter}}, an auto-parallelizable programming paradigm is described, and usefulness of
studying such paradigm is discussed.

The \hyperref[chap:scheduler]{\textit{Scheduler chapter}} formally explains scheduler algorithm which is required for automatic parallelization.
Methods for measuring scheduler's performance are also proposed.

In the \hyperref[chap:compiler]{\textit{Interpreter chapter}}, a custom low-level programming language is introduced alongside with the interpreter.
This interpreter performs extensive static analysis before executing the code. Thanks to these analyses using of
scheduling algorithms are possible.

The \hyperref[chap:implementation]{\textit{Implementation chapter}} contains a description of implementations which are part of the diploma thesis. Namely,
it is the implementation of the scheduling algorithms and tools to measure their performance. Then it is
the implementation of the interpreter.

In the \hyperref[chap:results]{\textit{Results chapter}}, the performance of the scheduling algorithms is discussed. In addition to that, the behavior
of the whole interpreter is shown on several real-world applications.
