Teaching
My approach to teaching is something I am fond of and where I have strong opinions.
Philosophy
I am very happy to work with students who want to learn and offer them the best support I can. Thus, if you have questions, feel free to contact me.
So far, I am not aware of any successful shortcuts that do not involve continuous exercise and repetition. Even with my best explanations, you will still need to listen, commit them to memory and apply them in practice from time to time. It is not Most life and fitness lessons can be applied to learning as well.
My teaching philosophy is based on experience and rooted in the 'Qualifizierungsprogramm "Professionelle Lehrkompetenz für Hochschulen"' that I completed. I have also won a teaching award at HHU (even though I am the third person from the left despite the caption claiming otherwise).
Courses
I have been involved in several courses:
Functional Programming
This is my "main" course I have taken over. Since 2015, I have been involved - first, by giving tutorials, since 2017 I have been responsible for the entire course.
There have been three flavours of this course:
- Functional Programming (not held anymore) - This was a master's course form 2013 until 2020.
- Introduction to Functional Programming - This is a successor to the master's course (now in the bachelor's program) with reduced workload and more time allocated to get comfortable with the foundations, such as syntax, higher-order functions and recursion.
- Advanced Functional Programming: Clojure - This is an extension of the later parts of the original course, covering more advanced topics. It is located in the master's program.
The material for the courses is available on GitHub
Model Checking
The model checking course is a master's course. I have given it in 2018 and 2020, discussed it several times with colleagues and handed it off to others (shuffling around the required teaching hours).
Several course iterations are discussed in papers I co-authored:
- Rooting Formal Methods within Higher Education Curricula for Computer Science and Software Engineering - A White Paper - Antonio Cerone, Markus Roggenbach, James Davenport, Casey Denner, Marie Farrell, Magne Haveraaen, Faron Moller, Philipp Körner, Sebastian Krings, Peter Csaba Ölveczky, Bernd-Holger Schlingloff, Nikolay Shilov, Rustam Zhumagambetov
- Experience Report on an Inquiry-Based Course on Model Checking - Sebastian Krings, Philipp Körner, Joshua Schmidt
- Increasing Student Self-Reliance and Engagement in Model-Checking Courses - Philipp Körner, Sebastian Krings
(Foundations of) Theoretical Computer Science
I have been involved in the mandatory course on theoretical computer science, giving tutorials and being responsible for exercise sheets, exams and administrative tasks. As many students struggle (and/or are not too invested in the course), I have strong opinions on how the contents should be taught. Yet, as I was not responsible for the lectures, I was not able to test them.
Blockchain Technology
In 2019, I organised the first course entirely by myself; partially due to the hype of blockchains, partially because I wanted to learn more about it myself. It was a seminar in the master's program.
The course was only offered once. While the technology is exciting, learning more about it severely made me question the existence of a valid use case.
Advanced Logic Programming
I have supported the master's course on advanced logic programming in 2019, and was responsible for the tutorial group.