Alex Gerdes
Chalmers University of Technology
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Alex Gerdes.
artificial intelligence in education | 2017
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
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
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
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
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
Alexey Rodriguez; Johan Jeuring; Patrik Jansson; Alex Gerdes; Oleg Kiselyov; Bruno C. d. S. Oliveira
international conference on computer supported education | 2009
Alex Gerdes; Bastiaan Heeren; Johan Jeuring
Technical Report Series | 2015
Alex Gerdes; Bastiaan Heeren; Johan Jeuring; Thomas~van Binsbergen
Technical Report Series | 2014
Johan Jeuring; Thomas~van Binsbergen; Alex Gerdes; Bastiaan Heeren
international conference on computer safety reliability and security | 2013
Rolf Johansson; Hans Eriksson; Hans Svensson; Kenneth Östberg; Thomas Arts; Alex Gerdes; Martin A. Skoglund