We will learn the field of algorithm engineering which
guiding principle is to bridge the gap between theory and practice. There
are many well-known cases where classical theory of algorithms
inadequately describes behavior of algorithm in practice such as
simplex algorithm, quicksort, graph planarity, graph minor etc.
Consequently it is of great importance to obtain good implementation
and to experimentally examine the algorithm. During the course we
will look at the algorithm engineering process and its phases:
realistic models of computation, algorithm design, algorithm
implementation, beyond worst-case analysis, experiments, generating
realistic inputs, and creating algorithmic libraries.