Course: Software Engineering and Technology

Eindhoven University of Technology, Eindhoven
January 29 – February 1, 2018
Centrum Wiskunde & Informatica (CWI), Amsterdam
February 2, 2018

IPA organises Advanced Courses on each of its major research fields: Algorithmics and Complexity, Formal Methods and Software Technology. Each of these Advanced Courses intends to give an overview of (part of) the research of IPA in this specific field.

The Advanced Course, which is hosted by IPA at the Eindhoven University of Technology, focusses on subject areas in software engineering and software technology where successful research is being conducted by groups in IPA. From several of these areas, such as software analytics, language workbenches, software evolution/continuous integration, and functional programming, topics are taken to which an entire course day (or two) is dedicated. Course days consist of lectures mixed with active training (exercises, assignments, etc.).

Dates, Location and Programme

The lectures will take place in room MF 13 in building Metaforum of the TU/e. The overall schedule of the course is as follows: course days will start at 10.00 and last until approximately 16.30 hours. Short coffee breaks are planned at around 11.00 and around 14.45 and an organised lunch break at, roughly, 12.30-13.30. Friday 2 February, the course will take place in Amsterdam in the form of attending the Software Engineering Symposium.

MONDAY 29 January Jan Kuper (QBayLogic)
CANCELLED DUE TO ILLNESS OF THE SPEAKER - Functional Programming and Its Application to FPGA-programming

Functional programming languages are close to a mathematical perspective on programming, hence these languages offer powerful abstraction mechanisms. We will discuss several of these mechanisms such as pattern matching, recursive functions and recursive types, polymorphism, higher order functions, embedded (domain specific) languages. We will illustrate and practice the usage of these concepts in actual programming and discuss concrete examples. The progress during the day will depend on the background of the participants.
As a further aspect of the abstraction perspective we will demonstrate some transformation rules to derive equivalent programs from a given program. This becomes particularly interesting in the context of FPGA programming since on hardware complexity is a two-dimensional concept: both execution time and area needed are relevant on FPGAs. We will discuss several examples to demonstrate the usage of such transformations.
30 & 31 January
Tijs van der Storm (CWI and RUG)
and Jurgen Vinju (CWI and TU/e)
Hacking Domain-Specific Languages with Rascal / Reverse engineering with Rascal

Hacking Domain-Specific Languages with Rascal
In this tutorial we will apply the Rascal meta programing system as a language workbench. Language workbenches are “compiler-compilers on steroids”, which allows language developers to not only define type checkers, compilers, but also various editor services, such as syntax highlighting, outlines, jump-to-definition, error marking, etc. The running case in question will be a simple DSL for defining online questionnaires, called QL. We’ll start with exploring the basic architecture of a language implementation and the relevant Rascal features for defining the basic components of a language. Then we’ll dive into hands on exercises extending and/or modifying the basic skeleton of QL.

Reverse engineering with Rascal 
We apply the Rascal metaprogramming language to treat code as data. Treating code as data is hairy business, because of the details of programming languages, and the diversity of intermediate formats for code analysis and the corresponding algorithms that work on them. However, we really need to make tools which process code to help software engineers accomplish otherwise infeasible tasks, and to help researchers in software engineering to study code empirically.The Rascal metaprogramming languages and its libraries for analyzing specific programming languages are designed to make treating code as data “easier”, via reuse, abstraction, and integration of necessary concept (parsing, pattern matching, query, templating) on the meta-language level.During this day we motivate Rascal and explain its basic features, demonstrate it on analyzing Java and C++ code and we develop together a number of small code analysis tools.

Please make sure to install the latest version of Eclipse, Rascal and ClAiR via

THURSDAY 1 February Bogdan Vasilescu (Carnegie Mellon University)
and Alexander Serebrenik (TU/e)
Collaborative and Human Aspects of Software Engineering

Creating software requires more than applying the right technical solutions in the right technical ways — it is an inherently collaborative, human venture. These days, software is being developed by increasingly distributed and increasingly diverse groups of individuals. How can we empower distributed teams to develop software effectively and productively? How can technology help software teams do more with less? What effects does team composition have on productivity and code quality? What effects does the team communication has on the software development process and quality of software? How do technological changes affect the software development process?
On February 1 we focus on collaborative and human aspects of software engineering, from an empirical perspective. The module gives an overview of empirical research methods available to software engineering researchers for data collection and data analysis, both qualitative and quantitative. We will discuss the pros and cons of different methods, protocols for rigorously applying the methods, and how to combine them in different research designs in order to answer software engineering research questions. We will also review and critique examples of research papers illustrating these methods. In the hands-on session we will practice using these different methods on sample data sets.
FRIDAY 2 February SEN Symposium, CWI, Amsterdam


Registration closes on 15 January. Follow this link to register for the IPA days, and also register yourself directly for the SEN Symposium if you will attend it on the Friday. As always, IPA PhD students can attend for free. For others, details on pricing will be made available upon request.

Elevator Pitches

PhD students with 2+ years of research experience are encouraged to propose an SEN Symposium elevator pitch on their research. See for the call.


Unlike Fall Days, overnight accommodation is not included by default for this course. The schedule is set up in such a way that it is feasible for many students to commute. In the event this is not feasible, let us know and we will provide basic overnight accommodation.  You can specify your accommodation needs on the registration form.