Teaching Activities
I teach / taught the following courses at the Lucerne University of Applied Sciences and Arts:
 Introduction to Artificial Intelligence: I give a gentle, practical introduction to constraint programming and multicriteria constraint optimization, game theory, recommender systems, Bayesian networks and influence diagrams, Markov chains and decision tree learning.
 XML Technologies: This course presents selected XML related topics such as: XML as data exchange format, namespaces, XPath, XML Schema, XSLT, XSLFO, XHTML, SVG, SMIL, XML processing in Java and C#, XML Security.

Information Security: My part of this course focusses on selected (privacypreserving) security protocols for electronic and internet voting, royalty cards, toll pricing, smartcard authentication (e.g. ebanking) and quantum cryptography. The second main topic is malware and hacking techniques including buffer overflows, identity theft (e.g. password cracking), denialofservice attacks, SQL injection attacks, XSS and social engineering.

Introduction to ObjectOriented Programming: This is an introductory course to Java, objectoriented paradigms and software design and development. It further includes some classes on elementary algorithmics with special focus on searching and sorting procedures.
I taught the following courses at the University of Luxembourg:

Computability & Complexity: This course started with an introduction to automata theory and languages. The main topics were finite, deterministic and nondeterministic automata, regular and contextfree grammars and languages and the pumping lemma. Then, Turing machines and their relationship to automata were introduced, and some famous undecidable problems were presented, e.g. the Halting problem and Post's correspondence problem. The second part of the course identified some important complexity classes and discussed the famous P = NP question.
I assisted the following courses at the University of Fribourg:

Computability & Complexity: The computability part of this course discussed different models of computation as for example loop and whileprograms, Turing machines, primitive and murecursive functions or quantum computers. Then, some famous undecidable problems were presented as the Halting problem and Post's correspondence problem. The second part of the course identified the most important complexity classes and discussed the famous P = NP question. Furthermore, the structure of NP was explored and it was shown how search problems fit into this theory.

Information Theory: This course introduced Shannon's theory of information. Besides the central notions of entropy and information many important applications of this theory are discussed such as: prefixfree codes, Kraft's inequality, the noiseless coding theorem, Huffman codes, first order Markov chains, Tunstall codes, LempelZiv codes, the noisy coding theorem and error detecting/correcting codes such as linear codes for example.

Functional Programming: This course provided an introduction to functional programming and its techniques. Buzzwords were: procedures and data, recursive data structures, conception by abstraction and generative recursion. All techniques were illustrated using the Scheme programming language.

Programming Paradigms: This course followed the introduction to functional programming and discussed different programming techniques such as objectoriented modeling, datadriven programming, generic programming, streamoriented programming and lazy evaluation. These techniques were applied within the realization of Monte Carlo methods and various systems for symbolic maths including solvers for symbolic algebra and differential equations.

Multimedia Engineering: We overviewed web technologies such as XHTML, CSS, XML, XSLT, MATHML, XML Schema and DTDs.