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 multi-criteria 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, XSL-FO, XHTML, SVG, SMIL, XML processing in Java and C#, XML Security.
  • Information Security: My part of this course focusses on selected (privacy-preserving) security protocols for electronic and internet voting, royalty cards, toll pricing, smartcard authentication (e.g. e-banking) and quantum cryptography. The second main topic is malware and hacking techniques including buffer overflows, identity theft (e.g. password cracking), denial-of-service attacks, SQL injection attacks, XSS and social engineering.

  • Introduction to Object-Oriented Programming: This is an introductory course to Java, object-oriented 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 non-deterministic automata, regular and context-free 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 while-programs, Turing machines, primitive and mu-recursive 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: prefix-free codes, Kraft's inequality, the noiseless coding theorem, Huffman codes, first order Markov chains, Tunstall codes, Lempel-Ziv 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 object-oriented modeling, data-driven programming, generic programming, stream-oriented 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.