After Matthias' first lecture, I would like to explain what my research group does. This gives you pointers towards projects that you might want to do in the second part of the course. Our starting point was the Function Template for functions that process a composite structure. Matthias has shown several applications of the Function Template, including an interpreter for propositions. We extensively used this Function Template some 20 years ago, and we developed it further. We tried to find ways to express the enhancements that are needed for a given Function Template when we take the output requirements into account. So we defined extension points in the templates where we could insert additional behavior. We modularized the description of those enhancements into separate modules. This lead to a new subfield of programming languages, called Aspect-Oriented Programming (AOP) and we are currently working on interfaces for aspects. We did another important step. One day I was in Mitch Wand's office and we talked about the Function Template. Mitch said: "Karl, you should generate the templates". So we did. We designed a Function Template generator that takes as input a class graph and a specification which substructure we need for implementing the current function requirement and as output we got a Function Template. This lead to the idea of the Law of Demeter (LoD) and Adaptive Programming (AP). The PhD student who did the LoD, Ian Holland, will get a distinguished alumnus award this year from Northeastern. This is a very prestiguous award given every year to a small number of individuals out of about 168000 alumni. Last year, Crista Lopes, the Mother of AOP and also my former PhD student, also got a distinguished alumnus award from Northeastern. Following Matthias' advice of retracing some old research in your project, I recommend that you study the papers of the two Alumni Award recipients to get ideas for your project. I will actively help you with that but more on this later.