Teaching

This is an overview of my teaching philosophy and recent teaching topics. This page is intended for informational purposes only. Note that all Software Architecture Group members contribute to these efforts.

General fields:

Teaching Philosophy

General Approach

In contrast to constructivism, which strictly favors activity-based discovery over lecturing, I aim to balance activities and theoretical input to build a shared vocabulary in the course and convey basic methodology. A central goal of my activities is to let students experience the practical difficulties of a theoretical concept. I prefer using a layered approach, in which major out-of-class activities (e.g., building a software) are aided by minor activities that get students started with concepts and methods they might need to complete the major activity (e.g., hands-on exercises with a tool they need).

Assessment

Collaboration

Constructive Alignment

High-level Learning Goals

AI for Programming

Seminar: AI for Programming

HPI Master’s seminar, summer term 2024.

Participants will develop their own small AI solution to a software engineering problem. The seminar will focus on an in-depth and hands-on understanding of large language models, their fine-tuning, the user experience of the resulting tools.

Seminar: Future of Programming

HPI Master’s seminar, winter term 2023/24.

Supervised topics:

Mining Repositories

Seminar: Code Repository Mining 2020

HPI Master’s seminar, summer term 2020.

Supervised topics:

Seminar: Machine Learning on Code Repositories

HPI Master’s seminar, summer term 2018.

Supervised topics:

Seminar: Code Repository Mining 2017

HPI Master’s seminar, winter term 2017/18.

Supervised topics:

Data

The following data is provided to the students:

Tools and Techniques

High-level Goals

We focus on teaching and giving regular (weekly) feedback and advice regarding the following practices during the seminar:

Software Testing

These topics are part of the annual undergraduate lecture Software Engineering I: