\documentclass[11pt]{article}
\usepackage[a4paper, hmargin={2.8cm, 2.8cm}, vmargin={2.5cm, 2.5cm}]{geometry}
\usepackage{eso-pic} % \AddToShipoutPicture
\usepackage{graphicx} % \includegraphics
\usepackage[inline]{enumitem}
\usepackage{xspace}

\author{
  \Large{Thomas Bracht Laumann Jespersen}
  \\ \texttt{ntl316@alumni.ku.dk} \\
}

\title{
  \vspace{3cm}
  \Huge{Implementing Base Change without Space Change}% \\
  %\Large{SOLE and LOSE as practical online, prefix-free encoding schemes}
}

\newcommand{\eof}{\textsc{eof}\xspace}

%%\date{DATE, 2015}

\begin{document}

\AddToShipoutPicture*{\put(0,0){\includegraphics*[viewport=0 0 700 600]{include/ku-farve}}}
\AddToShipoutPicture*{\put(0,602){\includegraphics*[viewport=0 600 700 1600]{include/ku-farve}}}
\AddToShipoutPicture*{\put(0,0){\includegraphics*{include/ku-en}}}

\clearpage\maketitle
\thispagestyle{empty}


%\begin{abstract}
%We present a C library implementing the SOLE and LOSE encoding schemes presented
%in~\cite{patrascu10trits}.
%
%The SOLE and LOSE encoding schemes are prefix-free, have excellent locality
%properties and can be implemented using $O(\log{n})$ space.
%
%We provide an implementation handling input blocks of 128 bits as a C99
%compliant library.
%\end{abstract}

\newpage
\section*{Project Description}

Prefix-free encoding schemes are of interest in cryptographic applications,
since they are a simple, but effective, counter-measure to extension attacks.
The crux of the problem is encoding the end-of-file (\eof) without reserving any
bit patterns in advance.

The most basic approach increases the input linearly, but is very fast to encode
and decode. Increasing the size of the data to be transferred is not preferable,
since data transfer is typically much slower than data processing.

The SOLE and LOSE encoding schemes introduced in~\cite{patrascu10trits} allow
enocoding \eof in an online stream with a constant additive overhead. In both
schemes, the input is handled in blocks of $b$ bits, viewed both as $b$-bit
numbers, but also as ``characters'' in an alphabet of size $2^b$.

During operation, the input blocks are handled in pairs, forming $2b$-bit
numbers and some arithmetic operations are performed on these larger numbers.

We present an implementation of the SOLE and LOSE encoding schemes as both
statically and dynamically linkable libraries.
Our implementation works with 128-bit blocks, thus requiring arithmetic
operations on 256-bit numbers. How these operations are implemented is presented
and discussed in the report.

The implementation is written in ANSI~C with zero dependencies and is therefore
expected to be quite portable. Some topics regarding portability of code will
be discussed.

Besides the practical aspects of implementing a portable library, we also
provide a comparison of SOLE and an implementation ad-hoc, naive approach. It is
our expectation that even if SOLE encoding requires more computation, it is on
average faster.

\section*{Learning Goals}

At the end of this project, the student will have:

\noindent Knowledge of:
\begin{itemize}[noitemsep]
	\item the SOLE and LOSE encoding schemes
	\item online streaming methods
	\item how arbitrary precision arithmetic operations can be implemented
\end{itemize}

\noindent Skills in:
\begin{itemize}[noitemsep]
	\item implementing compliant ANSI~C code using GNU's Autotools and building
		library code
	\item Validating such a library by benchmarking it against other
		libraries providing similar functionality
	\item Implementing arithmetic operations on numbers with more bits than
		available in a single register on a given architecture.
\end{itemize}

\noindent Compentences in:
\begin{itemize}[noitemsep]
	\item Implementing a C library for cryptographic usage
	\item Implementing streaming algorithms in ANSI C
	\item Testing and benchmarking library code
\end{itemize}

\bibliographystyle{unsrt}
\bibliography{refs}

\end{document}

Simply scared meter-maid runs like hell away from the cars.

Fanning the flames of democracy should be considered a sin.

Managing some else's expectations is extremely unpleasurable

There once was a student at KU
Who went on a trip to the loo
  After he flushed
  He deftly brushed
And the next person could use the loo, too

The once was a man in a hurry
Whose bowel movements caused him to scurry
  Brush he did not
  In his haste he forgot
So everyone found out he'd had curry
