Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Alex Gerdes is active.

Publication


Featured researches published by Alex Gerdes.


artificial intelligence in education | 2017

Ask-Elle: An Adaptable Programming Tutor for Haskell Giving Automated Feedback.

Alex Gerdes; Bastiaan Heeren; Johan Jeuring; L. Thomas van Binsbergen

Ask-Elle is a tutor for learning the higher-order, strongly-typed functional programming language Haskell. It supports the stepwise development of Haskell programs by verifying the correctness of incomplete programs, and by providing hints. Programming exercises are added to Ask-Elle by providing a task description for the exercise, one or more model solutions, and properties that a solution should satisfy. The properties and model solutions can be annotated with feedback messages, and the amount of flexibility that is allowed in student solutions can be adjusted. The main contribution of our work is the design of a tutor that combines (1) the incremental development of different solutions in various forms to a programming exercise with (2) automated feedback and (3) teacher-specified programming exercises, solutions, and properties. The main functionality is obtained by means of strategy-based model tracing and property-based testing. We have tested the feasibility of our approach in several experiments, in which we analyse both intermediate and final student solutions to programming exercises, amongst others.


annual erlang workshop | 2015

Linking unit tests and properties

Alex Gerdes; John Hughes; Nicholas Smallbone; Meng Wang

QuickCheck allows us to verify software against particular properties. A property can be regarded as an abstraction over many unit tests. QuickCheck uses generated random input data to test such properties. If a counterexample is found, it becomes immediately clear what we have tested. This is not the case when all tests pass, since we do not (and shall not) see the actual generated test cases. How can we be sure about what is tested? QuickCheck has the ability to gather statistics about the test cases, which is insightful. But still it does not tell us whether the particular unit test scenarios we have in mind are included. For this reason, we have developed a tool that can answer this question. It checks if a given unit test can be generated by a property, making it easier to judge the propertys quality. We have applied our tool to an industrial use case of testing the AUTOSAR basic software modules and shows that it can handle complex models and large unit tests.


annual erlang workshop | 2015

Attribute grammars in Erlang

Ulf Norell; Alex Gerdes

Many functions take a value of a particular (recursive) data structure as input and compute an output value by traversing the structure and collect, combine, or update values in that data structure. Some examples are: collecting all hyperlink tags in a HTML tree, calculating the depth of a binary tree, or adding a prefix to every free variable name in an abstract syntax tree. When defining such functions we need to write code that takes care of traversing a data structure. This code is often repeated for functions that operate on the same data structure, and is often not essential for the operation we want to perform. This type of repetitive code is often referred to as boilerplate code. Abstraction is a way to remove this boilerplate code, for example by defining higher-order functions. Higher-order functions can be used to separate the boilerplate code from the essential parts. Common examples of higher order functions are map and fold.


international conference on software testing verification and validation workshops | 2015

Graphical editing support for QuickCheck models

Thomas Arts; Kirill Bogdanov; Alex Gerdes; John Hughes

QuickCheck can test a system by specifying a state machine for the API exported by that system. This state machine specification includes a list of possible API calls. Each call is accompanied by a precondition, a postcondition, a generator for the arguments, and a description of how the state is changed. Based on this specification QuickCheck generates a random sequence of API calls. The preconditions ensure that a generated sequence is valid, and the postconditions check that the system behaves as expected. Many systems require an initialisation call before other calls, describing the transition from an uninitialized to an initialised state. QuickCheck offers two ways of specifying transitions between states: using preconditions or a finite state machine abstraction. In this paper we show, by means of an example, that the latter approach is to be preferred. In addition, we present a recent extension to QuickCheck that allows a user to graphically create and edit a finite state machine specification. This extension simplifies and speeds up the specification of a finite state machine, which can be regarded as a formal model of the system, considerably. The graphical representation makes the formal model easier to understand, and visualises the distribution of API calls. Moreover, the extension allows the user to change this distribution.


international conference on computer safety, reliability, and security | 2014

Checking Verification Compliance of Technical Safety Requirements on the AUTOSAR Platform Using Annotated Semi-formal Executable Models

Martin A. Skoglund; Hans Svensson; Henrik Eriksson; Thomas Arts; Rolf Johansson; Alex Gerdes

Implementing AUTOSAR-based embedded systems that adhere to ISO 26262 is not trivial. High-level safety goals have to be refined to functional safety requirements and technical HW and SW safety requirements. SW safety requirements allocated to the application as well as the underlying AUTOSAR platform. Finding relevant safety requirements on the AUTOSAR basic software are a challenge. AUTOSAR specifications provide incomplete lists of requirements which might be relevant. In this paper we address this challenge by providing tool support to automatically extract relevant functional requirements for given safety scenarios. A conservative estimation gives that the safety-relevant part of the overall requirements can be as small as 30%, which reduce the necessary rigid testing effort. An electronic parking brake example is presented as a demonstration of concept.


symposium/workshop on haskell | 2008

Comparing libraries for generic programming in haskell

Alexey Rodriguez; Johan Jeuring; Patrik Jansson; Alex Gerdes; Oleg Kiselyov; Bruno C. d. S. Oliveira


international conference on computer supported education | 2009

CONSTRUCTING STRATEGIES FOR PROGRAMMING

Alex Gerdes; Bastiaan Heeren; Johan Jeuring


Technical Report Series | 2015

Ask-Elle: an adaptable programming tutor for Haskell giving automated feedback

Alex Gerdes; Bastiaan Heeren; Johan Jeuring; Thomas~van Binsbergen


Technical Report Series | 2014

Model solutions and properties for diagnosing student programs in Ask-Elle

Johan Jeuring; Thomas~van Binsbergen; Alex Gerdes; Bastiaan Heeren


international conference on computer safety reliability and security | 2013

Don't Judge Software by Its (Code) Coverage

Rolf Johansson; Hans Eriksson; Hans Svensson; Kenneth Östberg; Thomas Arts; Alex Gerdes; Martin A. Skoglund

Collaboration


Dive into the Alex Gerdes's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Hans Svensson

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar

John Hughes

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar

Martin A. Skoglund

SP Technical Research Institute of Sweden

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Henrik Eriksson

SP Technical Research Institute of Sweden

View shared research outputs
Top Co-Authors

Avatar

Kenneth Östberg

SP Technical Research Institute of Sweden

View shared research outputs
Top Co-Authors

Avatar

Nicholas Smallbone

Chalmers University of Technology

View shared research outputs
Researchain Logo
Decentralizing Knowledge