Course: Software Technology

Software Ecosystem Security lab, Utrecht University, Utrecht
Monday 13 May

Academisch Genootschap Eindhoven, Eindhoven
Wednesday May 15 – Friday May 17, 2023

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 or related to this field or IPA.

This edition will cover several topics around software technology, each with an entire course day dedicated to them. Course days consist of lectures mixed with active training (exercises, assignments, etc.).

Dates, Location and Programme

The course take place in two separate locations and differing times:

  • Monday 13 May: Software Ecosystem Security lab at Utrecht University (Minnaert Building, Leuvenlaan 4, 3584 CE Utrecht). The course starts at 09:30 and lasts until 18:30, with a lunch break between 13:00 and 14:00.
  • Wednesday 15 May – Friday 17 May: Academisch Genootschap Eindhoven, Parklaan 93, 5613 BC Eindhoven. Course days will start at 10.00 and last until approximately 16.30 hours. Short coffee breaks are planned in the morning and afternoon; and lunch is included, ca. 12.15-13.30.

The overall schedule of the course is as follows:

MONDAY 13 May (Utrecht) Harald Störrle, Kate Labunets (Utrecht University)
Empirical Research Methods in Software Engineering and Informatics

This part of the course consists of participating the first day of the ERMSEI course. This day will give an introduction to empirical research and discuss the following topics:

  • Controlled experiments
  • Statistical Techniques
  • Threats to Validity

Participation in this day is limited to 10 students (decided on a first-come first-serve basis).

WEDNESDAY 15 May (Eindhoven) Thomas Koopman, Jordy Aaldering (Radboud University)
An introduction to SaC: parallel performance made easy

In this tutorial, we give an introduction into SaC, a functional array language that gives you the expressive power of NumPy, Julia, Matlab or R but can be compiled into High-Performance parallel codes running on GPUs, SMPs or clusters. Besides learning the basics on how to get started, this tutorial is hands on, enabling you to implement your own, interactive Mandelbrot image  generator in SaC.

THURSDAY 16 May (Eindhoven) Ana-Lucia Varbanescu (University of Twente)
A crash-course on HPC: programming (m)any-nodes supercomputers

HPC applications use supercomputers to reach significant performance – often orders of magnitude beyond that of a simple server. In this course we present the basic architectures and programming paradigms that enable this performance. We introduce OpenMP, MPI, OpenACC, and CUDA, and discuss where and how they can be used. We also include a short hands-on session, to allow for some “fingers-streching” on the keyboard. We conclude with a brief dive into performance analysis and engineering.

FRIDAY 17 May Eindhoven) Tijs van der Storm (CWI)
Build Your Own DSL in Rascal
Meta programming is programming with programs as input and output. Rascal ( is a programming language specifically designed for meta programming, by providing powerful language features for parsing, traversal, querying, code generation, origin tracking, and pattern matching. In this course we will implement essential components of a Domain-Specific Language (DSL) called QL (Questionnaire Language). Language implementations (compiler, interpreter, etc.) are meta programs after all! The topics we will cover are: syntax definition, name resolution, wellformedness checking, dynamic interpretation, and source-to-source transformation. At every completion of an exercise, the results can be observed as part of the (pre-wired) IDE, based on Rascal’s Language Server Protocol (LSP) for DSLs. After completing the course, you’ll be ready to start implementing your own DSLs in Rascal.


Registration is done via this form, and will close Tuesday May 7th at 10:00 (CET).

As always, IPA PhD candidates can attend for free. For others, details on pricing will be made available upon request.


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 (mainly: PhD candidates based at RUG or UT), let us know and we will arrange basic overnight accommodation. You can specify your accommodation needs on the registration form.