Aarhus Universitets segl

Programming languages

Theme focus

Programming is problem solving. Various programming paradigms exist that are highly suited to tackle certain kinds of problems, and as software engineers we seek to discover, understand, relate, advance, and communicate the strengths, weaknesses, and opportunities that these paradigms afford as vehicles for problem solving.

Paradigms include imperative programming, functional programming, and logic-based programming, in addition to concepts such as object orientation, reactivity, constraint system solving, stateful vs stateless programs, and so on. Modern-day languages can not (usually) be strictly categorised into one or more paradigms, and instead exploit and draw inspiration from myriad paradigms and concepts. This raises fascinating questions:

  • What is the impact (strengths, weaknesses, opportunities) of mixing different kinds of paradigms together?
  • What direction is the larger software engineering community moving towards in terms of programming languages?
  • How can we map out which programming language is a good tool for a given problem?

Towards addressing these questions and more, the aim of the Programming Languages theme is to:

  • share our knowledge, excitment and enthusiasm for particular programming languages, paradigms and concepts within the group
  • move towards a collective impression (within the group) of the landscape of programming paradigms and their role in tackling assorted problems
  • develop a road map for education and dissemination: how can we support the wider software engineering community with the effective application of advanced programming concepts?

Meetings will be held monthly. In each meeting members will inform the group on interesting conferences and journals, and one member will give an informal presentation (about 45 minutes) on an interesting programming language or paradigm.

Theme members

Navn Jobtitel E-mail Telefon Bygning
Bennedsen, Jens Ingeniørdocent jbb@ece.au.dk +4541893090 5123, 420
Hallerstede, Stefan Lektor sha@ece.au.dk 5123, 411
Kirk, Henrik Bitsch Lektor henrik@ece.au.dk +4593508832 5123, 425
Rovsing, Poul Ejnar Lektor per@ece.au.dk +4541893267 5123, 412
Schultz, Carl Peter Leslie Lektor cschultz@ece.au.dk +4593508809 5123, 411

Teaching activities

There is a need to steer higher education in software engineering away from programming as a tool, and instead towards software programming as problem solving. This means finding new ways of teaching programming beyond simply walking students through programming features supported by various languages.

In addition, as educators we need to keep on top of the latest advances in programming languages on two major fronts: (a) practical, industry-oriented efforts, tools, techniques; (b) cutting edge research-driven efforts and new paradigms.

Current AU courses that are a focus for this theme include:

  • Introduction to Programming (BSc)
  • Algorithms and Datastructures (BSc)
  • Programming and Modelling (BSc)
  • Declarative Programming (BSc)
  • Programming Language Paradigms (MSc)
  • Modelling and Verification (MSc)


The technologies and tools that will be discussed in this theme include programming language compilers, interpreters, IDEs, constraint solving engines, static analysers, and so on.

Following is an indicative list of such tools and technologies:

  • Idris for Dependent Types for stronger compiler-enforced guarantees
  • Haskell/Scala/F#/OCaml/Rust for Functional Programming
  • Prolog (e.g. SWI-Prolog) and Answer Set Programming (ASP, e.g. clingo from Potassco and DLV from DLVsystem) for Logic Programming
  • Lambda Prolog for mixing functional and logic programming
  • Constraint Solving
    • Constraint Logic Programming (e.g. CLP(R), CLP(FD), CLP(QS) etc.)
    • Answer Set Programming Modulo Theories (ASPMT)
    • standalone solvers such as z3


These projects are impacted by topics on programming languages. For example, they may utilise or even advance interesting programming languages and paradigms in an effective and elegant way to address a particular problem.

Ongoing Projects


Past Projects