% !TEX root

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% I, the copyright holder of this work, release this work into the
%% public domain. This applies worldwide. In some countries this may
%% not be legally possible; if so: I grant anyone the right to use
%% this work for any purpose, without any conditions, unless such
%% conditions are required by law.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\documentclass[
  digital, %% This option enables the default options for the
           %% digital version of a document. Replace with `printed`
           %% to enable the default options for the printed version
           %% of a document.
  notable,   %% Causes the coloring of tables. Replace with `notable`
           %% to restore plain tables.
  lof,     %% Prints the List of Figures. Replace with `nolof` to
           %% hide the List of Figures.
  lot,     %% Prints the List of Tables. Replace with `nolot` to
           %% hide the List of Tables.
  %% More options are listed in the user guide at
  %% <http://mirrors.ctan.org/macros/latex/contrib/fithesis/guide/mu/fi.pdf>.
]{fithesis3}
%% The following section sets up the locales used in the thesis.
\usepackage[resetfonts]{cmap} %% We need to load the T2A font encoding
\usepackage[T1,T2A]{fontenc}  %% to use the Cyrillic fonts with Russian texts.
\usepackage[
  main=english, %% By using `czech` or `slovak` as the main locale
                %% instead of `english`, you can typeset the thesis
                %% in either Czech or Slovak, respectively.
  english, german, russian, czech, slovak %% The additional keys allow
]{babel}        %% foreign texts to be typeset as follows:
%%
%%   \begin{otherlanguage}{german}  ... \end{otherlanguage}
%%   \begin{otherlanguage}{russian} ... \end{otherlanguage}
%%   \begin{otherlanguage}{czech}   ... \end{otherlanguage}
%%   \begin{otherlanguage}{slovak}  ... \end{otherlanguage}
%%
%% For non-Latin scripts, it may be necessary to load additional
%% fonts:
\usepackage{paratype}
\def\textrussian#1{{\usefont{T2A}{PTSerif-TLF}{m}{rm}#1}}
%%
%% The following section sets up the metadata of the thesis.
\thesissetup{
    date          = \the\year/\the\month/\the\day,
    university    = mu,
    faculty       = fi,
    type          = mgr,
    author        = Bc. Richard Kakaš,
    gender        = m,
    advisor       = {prof. RNDr. Antonín Kučera, Ph.D.},
    title         = {Causality-Based Parallelization of Input Data Processing},
    keywords      = {parallelization, parallel, programming language, programming paradigm,
                     message-driven programming, event-driven programming, nodejs, antlr,
                     static code analysis, symbolic execution, compilation, compiler, interpreter
                     },
    abstract      = {There are two ways how to improve the performance of the computer’s computation - increasing the
                     clock-speed of the computer’s processing unit or attaching more processing units to the computer.

                     The first approach does not require any changes to the program that carries out the computations.
                     However, there is a limit for the clock-speed which is still possible to achieve due to physical
                     limitations of the materials used in the silicon chips.

                     The second approach requires changes to the program that make them parallelizable. However,
                     it is more scalable because it does not impose any physical laws. Because of that, it makes sense
                     to study options for automatically parallelize programs execution.

                     This diploma thesis describes special kind of programs that can be automatically parallelized.
                     Performance results of the implemented tools, i.e., the scheduler and the interpreter, are presented
                     in this diploma thesis.
                     },
    bib           = bibliography.bib,
}
\usepackage{makeidx}      %% The `makeidx` package contains
\makeindex                %% helper commands for index typesetting.
%% These additional packages are used within the document:
\usepackage{paralist} %% Compact list environments
\usepackage{amsmath}  %% Mathematics
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{url}      %% Hyperlinks
\usepackage{markdown} %% Lightweight markup
\usepackage{listings} %% Source code highlighting
\lstset{
  basicstyle      = \ttfamily,%
  identifierstyle = \color{black},%
  keywordstyle    = \color{blue},%
  keywordstyle    = {[2]\color{cyan}},%
  keywordstyle    = {[3]\color{olive}},%
  stringstyle     = \color{teal},%
  commentstyle    = \itshape\color{magenta}}
\usepackage{floatrow} %% Putting captions above tables
\floatsetup[table]{capposition=top}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\begin{document}

% For markup examples see :
%  - https://www.overleaf.com/latex/templates/fithesis3-for-the-faculty-of-informatics-at-the-masaryk-university-in-brno/qmrtczzjvpfv#.WeCHP3Vfi00

%% Main content.
\input{chapters/intro}
\input{chapters/motivation}
\input{chapters/scheduler}
\input{chapters/compiler}
\input{chapters/implementation}
\input{chapters/results}
\input{chapters/conclusion}

%% Print the bibliography.
\printbibliography[heading=bibintoc]

%% Start the appendices.
\appendix

\input{appendices/manual}
\input{appendices/antlr_lexer}
\input{appendices/antlr_parser}
\input{appendices/code_server}
\input{appendices/code_gui}


\end{document}
