Teaching Overview

These days, I mainly teach one large course: Introduction to Imperative and Object-Oriented Programming Methodology, a 20 credit course with 120–140 active students on the 2nd year. Students come with a pre-knowledge of computational thinking (using Haskell) and some computer architecture, and learn imperative and object-oriented programming (using C and Java), along with basic software development methodology, meaning processes for breaking a simple specification down into smaller building blocks, top-down and bottom-up development, debugging, version control, testing, etc.

The last course evaluation is available here (in Swedish only). We are happy to report an “approval rating” of 4.6/5 (avg, median 5/5). This course relies heavily on a small army of TA:

I also teach a few lectures on task-based parallelism in the course Language-Based Abstractions for Concurrent and Parallel Programming.

Master in Concurrency and Parallelism

In 2012–2013, I lead the process of developing a master programme in concurrency and parallelism, an initiative from the UPMARC research centre on parallelism and multicore architectures at Uppsala University.

2014–2015, I served as the coordinator for this programme. Starting in 2016 the coordinator is Tjark Weber.


Brief Teaching Statement

My teaching philosophy is that you really cannot teach — the student must teach herself and make herself understand. What you can do as a teacher, is to facilitate that process, help the student organise knowledge, reflect, think critically, work systematically, etc.

The foremost goal of the teacher is to be knowledgeable, inspiring and a creator of good opportunities for learning to take place: knowledgeable enough to understand the students’ views of the subject through all levels of understanding and identify flaws or aspects that the students haven’t (yet) considered; be able to inspire the students to keep the flame of interest burning until they “get it” and until they are knowledgeable enough to have personal goals with their studies, a personal interest in the subject and personal satisfaction; create as many opportunities as possible for the students to “spend time with the subject”.

Another important goal of university education is to instill self-confidence in the student, and make her realise how far the acquired knowledge will get her. Here it is important that the teacher herself is knowledgeable and self-confident and can communicate this to the students so that they can trust e.g., that a certain grade does stand for something, so that they dare rely on their own knowledge in future courses and in their working lives. Furthermore, it is important to be able to nudge students ever so slightly in the right direction, so that they are able to solve their problems themselves, rather than presenting them with a pre-packaged solution that will quickly be forgotten.

I believe there is truth to the statement “the value of your education is what's left when you remove everything you learned in school”, meaning that the most valuable skill is how to acquire knowledge, critically evaluate statements, etc. This means asking “why” a lot and asking for reflection and motivation in exams and in class. Exams should force you to reason and be creative, not memorise. Any exam that can be studied for in a day or two using Memo or equivalent is a bad exam.

If you're a student at IT/UU, and want to comment on the above, please do!