AskElle: an online Functional Programming tutor

Research groups/keywords: 

AskElle [1] is a learning environment for the functional programming language Haskell. Using Ask-Elle students exercise their Haskell skills by developing functional programs incrementally. The tutor generates immediate semantically rich feedback and can supply the students with hints on different levels. In Ask-Elle it is relatively easy for a teacher to add or adapt programming exercises. We use strategies and property-based testing (QuickCheck) to generate the feedback and hints and have developed a strategy language for expressing those programming strategies. A strategy is interpreted as a context free grammar [2].

Project / problem description:

The aim of this project is to improve the functional programming tutor AskElle. There are many parts of the tutor that can be improved:

  • The frontend of the tutor (a web application) is very rudimentary and needs to be redesigned from the ground up. The current version is available at:
  • The backend gives a proper diagnosis of a student submission in most cases, but the translation to a feedback message can be improved. For example, if a student program violates a property the tutor generates a counterexample and gives this as feedback to a student. It would be better to include an explanation of the violated property along with the expected and student output.
  • We use program normalisation to ignore insignificant differences, such as different names or eta-expansions, from the expected solution(s). We would like to increase the number of recognised student submissions by adding/improving program transformations.
  • We have recently implemented a proof of concept for bug location determination for student programs. We would like to extend this approach by making use of model solutions and QuickCheck properties to further pinpoint bugs.
  • The proposed project is quite diverse and ranges from GUI development to compiler construction activities. Depending on the interests and competence of the project members, the focus of the project can be adjusted accordingly.

Problem that need to be solved

The following list of problems need to be addressed in this project:

  • Develop a new user friendly frontend for AskElle
  • Improve the translation of a student program diagnosis
  • Extend bug location determination by taking into account model solutions and
  • QuickCheck properties.

Some extensions:

  • Build a Haskell program generator, maybe using [3], to test the implementation of the (new) program transformations
  • Integrate the hlint [4] tool to suggest how to refactor a submitted program

 Equipment: Computer and Haskell compiler


[1] Alex Gerdes, Bastiaan Heeren, Johan Jeuring, and L. Thomas Binsbergen.
Ask-elle: an adaptable programming tutor for haskell giving automated feedback.
International Journal of Artificial Intelligence in Education, pages 1–36, 2016.

[2] Alex Gerdes, Bastiaan Heeren, and Johan Jeuring. Properties of Exercise
Strategies. In Hélène Kirchner and César Muñoz, editors, Proceedings of IWS
2010: 1st International Workshop on Strategies in Rewriting, Proving, and
Programming, Electronic Proceedings in Theoretical Computer Science, 2011.

[3] Michał H. Pałka, Koen Claessen, Alejandro Russo, and John Hughes. 2011.
Testing an optimising compiler by generating random lambda terms. In Proceedings
of the 6th International Workshop on Automation of Software Test (AST '11). ACM,
New York, NY, USA, 91-97.



  • Functional programming (Haskell)
  • Knowledge about (property-based) software testing
  • Some basic compiler construction knowledge

Suggested courses:

  • Functional programming
  • Testing, Debugging and Verification
  • Programming Language Technology (or Compiler Construction)


Date range: 
September, 2019 to September, 2024