"In theory, there is no difference between theory and practice. In
practice, there is."
Algorithms are at the core of every computer application. Traditionally,
the emphasis in algorithms research has been on the theory behind
efficient algorithms. While this has had profound impact in many
application areas, the step from theoretically efficient algorithms to
effective practical solutions is far from trivial. Algorithm Engineering
is a new paradigm that unifies the design, analysis, implementation and
experimental evaluation of practical algorithms. Its aim is to bridge
the gap between algorithmic theory and the software tools running on
modern computers. This is achieved by combining traditional theoretical
methods with realistic models for both application-specific problems and
computer hardware. Success stories of good Algorithm Engineering
practice exist in many fields of economy, technology and science and
include the development of the Google search engine, route planning
algorithms in navigation devices and the assembly of the human genome.
This course will introduce the basic Algorithm Engineering principles
and illustrate the power of practice-oriented algorithm design by means
of several examples from different applications including Google’s
pagerank algorithm, clustering in data analysis and network modules in
Lectures, theoretical and practical exercises, and final project.
Written exam, grading of exercises and project.
There is no book (yet) on Algorithm Engineering. The literature consists
of a collection of scientific papers, which will be provided for the
Algorithms and Data Structures
Computer Science students