I very much enjoy teaching and never cease to learn something new from the experience. Below is a list of modules that I am or have been involved with. Click on the links to get to more detailed pages. If you are one of my students and have any comments about my teaching, please do not hesitate to get in touch!
I was awarded the 2011 Teaching Excellence Award for the School of Natural and Mathematical Sciences at King's College London. Many thanks to all the students who nominated me.
I currently teach the following courses. Note that I cannot promise that I will continue to teach these courses in the future or that their syllabi will remain unchanged. Any changes are explicitly reserved.
7CCSMMDD: Model-driven design
Model-driven design is about creating software languages that allow us to focus on domain problems separate from implementation or operating concerns. In this module, we take a pragmatic approach, focusing on getting a hands-on, working knowledge of relevant MDD techniques and technologies, underpinned by solid conceptual foundations. We also discuss the pros and cons of using an MDD approach, when to do it and when to avoid it. As a result, students will be able to apply MDD in an informed manner in their future career.
6CCS3SPE: Softare Performance Engineering
In this module, we take a pragmatic approach to software performance engineering. Based on 12 case studies from industry, students solve practical tasks from risk assessment via performance modelling to performance design and performance testing. Particular emphasis is placed on performance engineering in the context of an agile development process.
Over time, I have supervised a large number of theses at bachelor, masters, and diploma level. Many of these theses have led to successful publications at conferences or workshops. Holger Kampffmeyer has been awarded a Best Diploma Thesis award by IBM.
I'm leading a CTF funded project on automating assessment of programming tasks at King's.
Together with the King's Learning Institute, I run this project based on semi-structured interviews of students.
One UG research fellowship has been funded for a literature survey into research on teaching programming on the UG level.
In this project, we are developing and deploying a series of programming competitions for 1st-year UG students at King's.
I have been a collaborator on a project funded by King's College Technology Enhanced Learning Fund 2012 on designing vodcasts for teachning purposes.
A Java framework for point of sale applications that is being used in undergraduate lab courses.
In the past, I have been involved in teaching the following courses. The list below is a selection not a complete list.
4CCS1PRA: Programming Applications
This 1st-year module builds on a previous module and teaches more advanced programming in Java as well as some software and user-interface design.
6CCS3SAD/7CCSMDAS: Software Architecture and Design
This masters-level course introduces notions of software architecture from the conceptual design all the way to formal specification and implementation.
In 2009, I have co-taught with Prof. Awais Rashid the AOSD module in the Masters course on Advanced Software Engineering at Lancaster University.
This masters-level course discusses principles of variability and extensibility in software and product line engineering and how they are supported by design patterns, role-modelling and the use of frameworks. In the course, also held a number of years previous to the linked instance, I have been responsible for designing and executing exercise sessions once a week.
This masters-level course discusses component-based software engineering and its foundations, covering topics such as reflective programming and the meta-object protocol, reducible graph structures, black-box, grey-box, and white-box reuse, specific composition systems, such as EJB, Corba, Invasive Software Composition, aspect-orientation. In the course, also held a number of years previous to the linked instance, I have been responsible for designing and executing exercise sessions once a week.
In this course, groups of up to five students, involving both computer science and management masters, are giving a technology based on which they are asked to develop something useful. Each group must agree on an idea, systematically develop a running prototype and produce a viable business plan for earning money with their idea. Students have the opportunity to win great prizes at the national Accenture competition. The course has been running a number of years now. Dresden teams have always been placed at the front of the competition, often earning second and third places in the nationwide finals.
Similarly to the Accenture Campus Challenge, in this course, groups form teams of up to 5 students and build a prototype based on an idea of their own. Different from the ACC, students are not provided with a technology, but rather with a general theme. In 2008, for example, the theme was "Saving the environment".
This undergraduate lab-course has groups of five students work on their first systematic software development project. In the timespan of half a year, these groups are asked to analyse, design, and implement a point-of-sale application. They are given a Java-based framework on which they are to build their own implementation. The course has been running successfully since 1997. I am no longer directly involved with the course, but have been the original developer of the framework in use.