  Parameterized complexity theory has lead to a wide range of algorithmic
breakthroughs within the last decades, but the practicability of these methods
for real-world problems is still not well understood. We investigate the
practicability of one of the fundamental approaches of this field: dynamic
programming on tree decompositions. Indisputably, this is a key technique in
parameterized algorithms and modern algorithm design. Despite the enormous
impact of this approach in theory, it still has very little influence on
practical implementations. The reasons for this phenomenon are manifold. One of
them is the simple fact that such an implementation requires a long chain of
non-trivial tasks (as computing the decomposition, preparing it,...). We
provide an easy way to implement such dynamic programs that only requires the
definition of the update rules. With this interface, dynamic programs for
various problems, such as 3-coloring, can be implemented easily in about 100
lines of structured Java code.
  The theoretical foundation of the success of dynamic programming on tree
decompositions is well understood due to Courcelle's celebrated theorem, which
states that every MSO-definable problem can be efficiently solved if a tree
decomposition of small width is given. We seek to provide practical access to
this theorem as well, by presenting a lightweight model-checker for a small
fragment of MSO. This fragment is powerful enough to describe many natural
problems, and our model-checker turns out to be very competitive against
similar state-of-the-art tools.
